网上都写了很多这类代码,我只记录我当前想记录,后续整理。
const demo = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("成功的回调");
}, 1000);
});
const demo1 = demo.then(() => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("成功的回调2");
}, 1000);
});
});
demo1的状态是由then回调函数return方法的返回值来决定的。
1 一定要注意Promise内部的状态是否被改变了,如果没有,那么是不会执行then方法的
2 在Promise中,返回任意一个非 promise 的值都会被包裹成 promise 对象,例如return 2会被包装为return Promise.resolve(2)。
3 .then 或 .catch 返回的值不能是 promise 本身,否则会造成死循环
4 .then 或者 .catch 的参数期望是函数,传入非函数则会发生值透传
5 .finally方法也是返回一个Promise,他在Promise结束的时候,无论结果为resolved还是rejected,都会执行里面的回调函数。
6 Promise.all() Promise.race() 不管状态如何变更都不影响执行完所有的Promise
7 await 返回的是一个Promise对象,那么他后面的代码执行要等到执行微任务时候执行
8 刚产生的