1. /**
  2. * Created by liyinghao on 2016/11/6.
  3. */
  4. const fs = require('fs');
  5. /*
  6. * 新建一个Promise对象,Promise就是一个容器,里面放置一个异步执行的API
  7. * */
  8. const p1 = new Promise((resolve, reject)=>{
  9. fs.readFile('./a.txt','utf8',(err,data)=>{
  10. if(err){
  11. /*
  12. * 容器中异步任务失败之后调用reject方法,把错误对象传递给reject,同时终止程序的执行
  13. * */
  14. return reject(err);
  15. }
  16. /*
  17. * 容器中的异步任务成功之后调用resolve方法,把结果传递给resolve方法
  18. * */
  19. resolve(data);
  20. })
  21. });
  22. const p2 = new Promise((resolve,reject)=>{
  23. fs.readFile('./b.txt','utf8',(err,data)=>{
  24. if(err){
  25. return reject(err);
  26. }else{
  27. resolve(data);
  28. }
  29. })
  30. });
  31. /*
  32. * promise对象一经创建,立即执行,可以通过执行创建的promise对象的then方法获取resolve方法中的值,
  33. * then方法需要一个回调函数,回调函数就是resolve方法
  34. * */
  35. p1.then(data=>{
  36. console.log(data);
  37. return p2;
  38. /*
  39. * 返回一个promise继续进行链式调用
  40. * */
  41. }).then(data=>{
  42. console.log(data);
  43. })
  44. /*
  45. * catch方法可以把之前任务中所有可能遇到的错误都捕获到
  46. * */
  47. .catch(err=>{
  48. throw err;
  49. });

promise基础用法的更多相关文章

  1. 整理一下Promise 的用法

    Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...

  2. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  3. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  4. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  5. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  6. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  7. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  8. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  9. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

随机推荐

  1. 用 Flask 来写个轻博客 (25) — 使用 Flask-Principal 实现角色权限功能

    目录 目录 前文列表 扩展阅读 Flask-Principal 使用 Flask-Principal 来实现角色权限功能 添加 Role Model 在 Manager shell 中手动的添加角色 ...

  2. 重温《javascript高级程序设计》(第3版)

    1.重温<JavaScript高级程序设计>(第3版) (一)重温<javascript高级程序设计>(第1-4章) (二)重温<JavaScript高级程序设计> ...

  3. sysenter内核入口点代码分析

    参考:http://www.mouseos.com/windows/kernel/KiFastCallEntry.html http://www.mouseos.com/windows/kernel/ ...

  4. app自动化生成测试报告

    1.首先导入from BeautifulReport import BeautifulReport 参考:https://www.cnblogs.com/may18/p/10445162.html 2 ...

  5. HDFS 工具类

    读取HDFS上文件数据 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import ...

  6. 偏向锁,偏向线程id ,自旋锁

    理解锁的基础知识 如果想要透彻的理解Java锁的来龙去脉,需要先了解以下基础知识. 基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁. 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发 ...

  7. C++中继承的protected访问级别

    1,子类是否可以直接访问父类的私有成员? 2,根据面向对象理论: 根据 C++ 语法: 3,继承中的访问级别编程实验: #include <iostream> #include <s ...

  8. Java面试之String、StringBuffer和StringBuilder的区别和原理

    首先我们先来谈谈String: String 对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象,即修改了 String 的引用. 因为 String 的底层是用数组来 ...

  9. ps学习记录

    基本快捷键: ctrl + 放大 ctrl - 缩小 ctrl 空格键 放大工具 ctrl 0 适合屏幕大小 ctrl 1 显示实际大小 ctrl n 新建画布 ctrl v 移动工具 按住alt键 ...

  10. jQuery动态回到顶部

    $(".back_top").click(function () { var sc = $(window).scrollTop(); $('body,html').animate( ...