Promise的状态
1. 一旦通过new Promise创建任务后,任务的状态就处于pending状态(挂起)。
eg:
2.如果promise任务中调用了resolve函数或者reject函数。那么promise的任务就会变成fulfilled或者rejected。且任务状态一旦确定,则不可逆。取决与先调用哪个函数。
eg:
此任务0秒后调用了resolve函数后promise这个任务状态就会变成fulfilled。
Promise的后续操作
1.针对任务完成的状态后可以有后续的操作--->用then函数进行相关的操作,then函数中可以传入两个实参,两个实参均为函数,如果promise的状态为fulfilled,则then函数会调用第一个函数,若promise的状态为rejected,则then函数会调用第二函数。
eg: 此promise函数的后续操作(then函数)会输出1
2.一般针对promise任务的失败状态,我们习惯性的选择使用catch函数来执行相关后续操作。
eg:
Promise的链式调用
1.then方法返回的一定是一个新的promise任务,新任务的状态取决于以下三点:
1)、如果没有对前面的任务的相关后续操作,新任务的状态与前面的任务状态一致。
2)、如果新任务是对前面任务的相关后续操作,且未执行,则新任务的状态为挂起
3)、如果新任务是对前面任务的相关后续操作,且执行完成,执行过程中没有错误,则新任务状态为完成,数据为返回值;如果执行过程中有错,则新任务状态为失败,数据为错误对象。如果返回值为一个新的任务(Promise 3),则新任务的状态与返回的新任务的状态一致;
3)、的例子: 1s后输出的b的状态为rejected
async与await的零碎知识
1.await必须放在async函数中执行。
2.await 之后的代码会进入执行队列中的微队列中(优先于宏队列执行)
或者说promise.resolve().then(函数)中的函数会进入微队列(micro queue)