Promise的几个重要问题
一、 Promise什么时候发生状态改变?什么时候获取值?
前面说过Promise的excutor是同步执行的回调函数,但是可以触发异步任务,因此有两种情况:
-
在excutor执行器中立即同步执行调用敲定函数,于是同步的实例改变状态并且获取到结果
-
在excutor执行器中异步的执行调用敲定函数,比如setTimeout,于是异步的改变实例状态并获取结果
二、Promise的实例一定要改变状态前指定回调函数吗?
不!Promise的实例可以在任何时候指定或者说绑定回调函数
-
改变前:
const promise = new Promise((fulfill, reject) => { setTimeout(()=>{ fulfill(true) }, 1000) }) promise.then(onFulfilled, onRejected) -
改变后:
同步的改变状态const promise = new Promise((fulfill, reject) => { fulfill(true) }) promise.then(onFulfilled, onRejected)或者,异步的绑定回调
const promise = new Promise((fulfill, reject) => { setTimeout(()=>{ fulfill(true) }, 1000) }) setTimeout(()=>

本文详细探讨了Promise的重要特性,包括状态何时改变、何时获取值、是否必须在状态改变前指定回调、是否能绑定多个then、executor与then回调函数的关系、如何串联Promise任务以及异常处理和中断Promise链的机制。通过这些深入理解,有助于提升JavaScript异步编程的能力。
最低0.47元/天 解锁文章
538

被折叠的 条评论
为什么被折叠?



