js--promise3

52 阅读1分钟
       const p1 = new Promise((resolve, reject) => {
           setTimeout(() => {
               resolve(1);
               throw new Error();
           }, 2000);
       });

       const p2 = p1
           .then((val) => {
               console.log(val);
               return val + 1;
           })
           .catch((err) => {
               console.log(err);
               return err;
           });

       Promise.all([p2, Promise.reject(3)])
           .then((val2) => {
               console.log(val2);
           })
           .catch((err2) => {
               console.log(err2);
           });

       //3
       // Uncaught Error
       // 1
       
       
       解析:1setTimeout是宏任务,后执行,直接看Promise.all
            2、promise.all中,第二个直接执行reject,结束,走最后一个catch,输出3
            3resolve(1)执行,内部执行异步微任务,所以抛出错误后,同步代码停止,异步继续执行,最后输出1