执行器executor:立即执行
利用then函数中存储successCallback和failCallback的值(this.successCallback.push(successCallback)或this.failCallback.push(failCallback)),通过resolve中使用while(this.successCallback.length)this.successCallback.shift()(this.value),reject中使用while(this.failCallback.length)this.failCallback.shift()(this.reason)来实现Promise的异步逻辑。
注:表达式a && 表达式b : 计算表达式a(也可以是函数)的运算结果,
如果为 True, 执行表达式b(或函数),并返回b的结果;
如果为 False,返回a的结果;
then方法的链式调用:then方法是可以被链式调用的,后面then方法的回调函数拿到的值是上一个then方法的回调函数的返回值。
需要判断Promise自己返回自己的操作,并返回错误原因。
通过setTimeout()函数,实现异步执行操作
Promise的then方法可以不传递任何参数
.then() === .then(value =>value)
Promise.all()是一个静态方法,接收一个数组(数组内容包括promise对象及普通值)作为参数,用于解决异步并发问题。允许代码按异步调用的顺序执行。.all()返回一个Promise对象。.all()方法需要所有Promise对象的结果都是成功的,结果才是成功的。有一个是失败的结果就是失败的。(要保证resolve方法在数组里的对象都调用完后执行,index === array.length)
Promise.finally(),不论Promise成功或失败,finally()接收的回调函数永远会执行。
通过throw reason将上一个then方法的失败回调函数的结果传递给下一个then方法的reject方法中
Promise.catch() 用于捕获失败回调函数,通过调用then方法中的失败回调实现。
Promise.then(value => value)
.catch(reason => reason)