老师帮看一下为什么无法捕获错误

来源:4-1 Promise.resolve() 和 Promise.reject()

WYW265672

2022-05-20 23:22:02

        // 具有 then 方法的对象作为参数
        const thenable = {
          then(resolve, reject) {
            console.log('then');
            // resolve('data');
            reject('reason');  // 老师下面的catch为什么捕获不了这里的错误
          }
        };
        // 因为Promise.resolve(thenable)是pending状态,所以决定不了then执行哪个回调函数.
        // 但是thenable里面的then方法会直接执行,所以执行结果的返回的Promise的状态决定了Promise.resolve(thenable).then()执行哪个回调函数
        Promise.resolve(thenable).then(
          data => console.log(data),
          err => console.log(err)
        ).catch(
            err=>console.log(err+'!')
        );
        console.log(Promise.resolve(thenable));  // Promise {<pending>}


写回答

1回答

好帮手慕久久

2022-05-21

同学你好,then方法的第二个函数是用来捕获错误的,该错误被then捕获了,所以catch没有执行:

https://img.mukewang.com/climg/628849c7097af7de05750210.jpg

建议调整一下:

https://img.mukewang.com/climg/628849fb09afbbf108060230.jpg

https://img.mukewang.com/climg/62884a0109bee97504060112.jpg

祝学习愉快!

0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程