Promise

1.Promise是什么?是解决什么问题的?

Promise是异步编程的一种解决方案,主要用于异步计算,可以将异步操作队列化按照期望顺序执行,返回符合预期的结果,可以在对象之间传递和操作promise,帮助我们处理队列。

2.为什么要用Promise?

如果在回调函数的内部还需要进行另外一个异步操作,嵌套一个异步操作还好,可如果是需要嵌套多个的时候,代码块就会很混乱,容易出错还不便于阅读,这种情况被称为‘回调地狱’

3.Promise的API:

resolve,reject,then,catch,all,race
1.resolve:将Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
2.reject:将Promise对象的状态从“未完成”变为“失败”,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
3.catch:catch也会返回一个promise实例,并且是resolved状态
4.Promise.all() :一次性执行多个Promise,如果所有的Promise都是成功的,返回是所有Promise结果组成的数组;如果有一个Promise执行错误,返回就是该Promise的reject值。
5.Promise.race():一次性执行多个Promise,返回的最快的结果。
6.then:
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)
2、.then()返回一个新的Promise实例,所以它可以链式调用
3、当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行
4、状态响应函数可以返回新的promise,或其他值,不返回值也可以我们可以认为它返回了一个null;
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
6、如果返回其他任何值,则会立即执行下一级.then()

4.Promise的三个状态:

1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
注:当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
Promise对象的状态改变,只有两种可能:
从pending变为fulfilled
从pending变为rejected
注:promise状态一经改变,状态就凝固了,不会再变。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • promise是什么? 1、主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 3...
    欣欣程序猿阅读 1,027评论 0 0
  • 本文转载至https://www.jianshu.com/p/1b63a13c2701 promise是什么? 1...
    莫名其妙的名字阅读 806评论 0 0
  • promise是什么? 1、主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 3...
    Koreyoshi丶阅读 1,514评论 0 1
  • 首先说一下promise 是什么? 1、本质是构造函数中主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序...
    只是墨辰阅读 7,168评论 0 0
  • promise是什么? 1、主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 3...
    师妹不叫思妹阅读 4,183评论 0 0