Promise - 优雅的异步操作回调地狱解决方案

一、简介

1.Promise是什么

Promise是ES6引入的进行异步编程的解决方案(原来的解决方案是直接使用回调函数)
通俗来讲,Promise就是一个构造函数,promise对象用来封装一个异步操作并可以获取其成功或者失败的结果值

常见异步操作的回调函数解决方案(旧)

1.fs 文件操作

require('fs').readfile.('./index.html',(err,data)=>{})

2.数据库操作
3.AJAX

$.get('/server',(data)=>{})

4.定时器

setTimeout(()=>{},1000)

2.为什么要使用Promise

(1)支持链式调用,可以解决回调地狱问题

  • 回调地狱问题的缺点
  1. 不便于阅读
  2. 不便于异常处理

(2)指定回调函数的方式更加灵活

  • 原来解决方案必须在启动异步任务前指定回调函数
  • promise:启动异步任务 => 返回 promise 对象 => 给 promise 对象绑定回调函数(甚至可以在异步任务结束后指定多个回调函数来处理结果)

二、Promise的属性

1.Promise的状态

promise的状态就是实例对象中的一个属性 【PromiseState】,它有三个可能的值

  • pending 未决定的(初始值)
  • resolved / fulfiled 成功
  • rejected 失败

一个promise对象只能改变一次状态,且只能由 pending 改为 resolved 或 rejected,无论变为成功或者是失败,都一定会有一个结果数据,成功的结果一般称为 value,失败的结果一般称为 reason

2.Promise的结果值

promise的结果值是实例对象中的另一个属性【PromiseResult】,它保存的是异步任务成功或者失败的结果值,在后续调用 then 方法的时候就可以将值取出来进行相关的操作

三、Promise的API

猜你喜欢

转载自blog.csdn.net/solitary__/article/details/112005996