一、Promise是什么

Promise 其实是异步编程的一种解决方案.简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,可以从改对象获取异步操作的消息。可以用来解决回调地狱的问题。

二、Promise的简单使用

我们使用new来构建一个Promise Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject, 分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数,

let fs = require("fs");
// 1、是对象
// 2、内部有异步任务
// 3、状态
// resolve:成功状态
// reject:失败状态
let p1 = new Promise((resolve, reject)=>{fs.readFile("./a.txt","utf-8",(err,data)=>{if(err){// 失败时reject("读取失败");}else{// 成功时resolve(data);}});
});let p2 = new Promise((resolve) => {fs.readFile("./b.txt","utf-8",(err,data)=>{if(!err){resolve(data);}});
});let p3 = new Promise((resolve) => {fs.readFile("./c.txt","utf-8",(err,data)=>{if(!err){resolve(data);}});
});

Promise实例生成以后,可以用then方法指定resolved状态和reject状态的回调函数,在then方法中,你也可以直接return数据而不是Promise对象,在后面的then中就可以接收到数据了

p1.then(data=>{console.log(data)return p2;
}).then(data=>{console.log(data)return p3;
}).then(data=>{console.log(data)
})

Promise解决回调地狱相关推荐

  1. Promise(解决回调地狱)

    Promise() 对象: 存在三种状态: //进行时 pending// 成功 resolve//失败 reject 执行语句: let promise= new Promise((resolve, ...

  2. promise解决回调地狱(callback hell)

    promise解决回调地狱(callback hell) 具体参考 阮一峰,ES6标准入门 在我们需要对一个异步操作进行频繁的调用的时候,且要保证一步操作的顺序,可能会出现 回调地狱(callback ...

  3. Promise的基础使用与生成器配合Promise解决回调地狱

    经过几天对Promise的了解,希望可以帮助到大家. 什么是回调地狱         说起回调地狱 首先想到的是异步 在js中我们经常会大量使用异步回调,常用的ajxa请求 来看下面这段代码: fun ...

  4. Promise解决回调地狱写法

    这里可以使用Promise来解决回调地狱的问题! 那么我们这里有一个需求,就是我们需要读取三个 .txt 文件,需要第一个文件读取完成后才能读取第二个文件以此类推. 那么这里来一个Promise的错误 ...

  5. promise解决回调地狱的问题

    什么是回调地狱 怎么解决回调地狱的问题 要了解什么是回调地狱,首先要了解 什么是同步,什么是异步函数 同步函数:当一个函数是同步执行时,那么当该函数被调用时不会立即返回,直到该函数要做的事情全部做完之 ...

  6. node js Bluebird 简单介绍 promise 解决回调地狱

    Promise是异步代码实现控制流的一种方式.这一方式可以让你的代码干净.可读并且健壮. 异步回调如下: fs.readFile('directory/file-to-read', function( ...

  7. 使用promise解决回调地狱_「每日一题」Promise 是什么?

    window.Promise 已经是 JS 的一个内置对象了. 1. Promise 有规格文档吗? 2. 你一般如何使用 Promise. ----------- 目前的 Promise 都遵循 P ...

  8. 使用promise解决回调地狱_使用Promise 解决回调地狱

    const fs = require('fs') function getFileByPath(fpath) { return new Promise(function (resolve, rejec ...

  9. 使用promise解决回调地狱_回调地狱的由来和如何利用promise解决回调地狱

    var fs =require('fs') fs.readFile('./a.txt', 'utf8',function(err,data){ if(err){ console.log('读取失败') ...

最新文章

  1. NLP工程师平均月薪3W起,如何从文本情感分析入坑NLP?
  2. Java的左移和右移的含义!
  3. 18年第十三届黑龙江省赛
  4. js实现promise.all promise.race promise.resolve
  5. 链接静态库的顺序问题
  6. “大树底下”的阿里电商 淘品牌的“配角变名角”
  7. python matplot.pyplot.plot() 的用法 plt.plot()(绘制y相对于x的线条和/或标记。)
  8. python安装常见问题_Python常见问题
  9. windows访问mysql57_windows下 Mysql5.5升级5.7(其实就是安装了两个版本的mysql)
  10. java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...
  11. pod install 在1.0.0.beta.1 cocoapods版本显示错误
  12. 1419. Minimum Number of Frogs Croaking
  13. python中比较运算符
  14. 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
  15. 【疑难杂症】Oculus Quest2 手机配对时找不到5-digit-code
  16. C/C++中的日期和时间
  17. Admin - 验证列表 ValidateList<E>
  18. feof()函数的文件操作
  19. 聪明的数据结构和笨拙的逻辑代码
  20. CVPR2016 论文快讯:人脸专题

热门文章

  1. 项目管理中的问题以及改进方法
  2. python setattr函数_Python内置函数(53)——setattr
  3. Linux系统mongdb还原数据库,linux - mongodb备份mongodump、恢复mongorestore
  4. EChart案例-圆形环比图
  5. 特斯拉车钥匙低功耗评测过程中,发现一个奇怪问题,路过的大神帮忙看看!
  6. Jflow;JBoss JBPM ;Activiti以及FixFlow ;SWF五大流程引擎的对比
  7. 虚拟机的服务器黑屏,VMware Workstation 14运行虚拟机黑屏解决办法
  8. 关于数据结构链表问题(C语言实现)—— 线性表顺序存储设计与实现
  9. 队列的简单实现(C语言)
  10. 测试用例设计方法之判定表法