一、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. linux显卡驱动版本最好,Linux 用户如何安装 Nvidia 331.67 显卡驱动稳定版本
  2. 复试计算机网络与软件工程,2018华南理工大学软件工程复试经验贴
  3. 【poj1995】Raising Modulo Numbers
  4. 如何在Windows下像Mac一样优雅开发
  5. SVN服务端与客户端安装(汉化包)以及简单使用
  6. html自动触发双击事件,js主动触发单击事件
  7. 在linux上运行爬虫任务报错:Overridden settings******
  8. matlab 差分 平稳时间序列,利用时间序列模型预测贵阳市烟草生长期内的降水量...
  9. java反射机制和运用
  10. WISP Client+AP WDS  的区别
  11. 软件测试---UI界面测试点
  12. iOS开发 关于YY_Model中,modelContainerPropertyGenericClass解析数组出现崩溃问题
  13. win7万能声卡驱动_我把一台PC的操作系统从win7换成了win10,它真的很棒!
  14. 淘宝买二级c语言题库可以嘛,大学计算机二级考试(C语言)试题在哪可以买?...
  15. Lake Counting S
  16. 梯度下降法和最速下降法区别
  17. 实验二 贪吃蛇的游戏开发
  18. 机器学习笔记丨神经网络的反向传播原理及过程(图文并茂+浅显易懂)
  19. 前端_快速入门Vue.js框架
  20. 如何在服务器开启PathInfo

热门文章

  1. flutter 微信语言选择_Flutter 玩转微信——通讯录
  2. 线程池使用:CPU密集型和IO密集型
  3. Javascript常用API及事件原理相关笔记(一)
  4. 魔改xxl-job,彻底告别手动配置任务!自动注册xxljob定时任务
  5. Python多线程——队列(Queue)
  6. 关于移动硬盘分区的经验
  7. java syn攻击程序_SYN blood攻击
  8. 职高机电专业和计算机专业哪个好,职高有哪些专业?读职校什么专业好
  9. JavaScript 判断数据类型
  10. 第四次挥手后等待的2MSL到底是多久?