关于这段代码中的捕获错误

关于这段代码中的捕获错误

const thenanle = {
            then(resolve, reject) {
                console.log('then');
                resolve('data');
                // reject('reason');
            }
        }
        Promise.resolve(thenanle).then(
            data => console.log(data),
            err => console.log(err)
            )

我试了很多种方式都捕捉不到错误,是不是要在''thenanle'里面添加一个'catch()' 函数? 麻烦老师最好能代码演示一下。 刚学习Promise需要慢慢理解

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2023-02-13 14:18:00

同学你好,问题解答如下:

1、不是的,当thenable对象下then方法中调用reject方法时,在后面的then的第二个回调函数中已经捕获错误了,并在控制台中输出对应的错误信息,如下图所示:

https://img1.sycdn.imooc.com//climg/63e9d54e0973ff5516520844.jpg

2、同学是不理解为什么视频中讲师的控制台出现如下图所示错误吗?

https://img1.sycdn.imooc.com//climg/63e9d58609bf7bc027541452.jpg

如果是的话,那么是因为讲师在最后又调用了一次Promise.resolve(thenable),并没有针对该函数进行错误处理,所以才在控制台中抛出了错误,如下图所示:

https://img1.sycdn.imooc.com//climg/63e9d60f09b16d7323761112.jpg

祝学习愉快~

  • 提问者 懒狗不配发财 #1

    是的,的确是疑惑视频中的错误。 感谢老师解答!

    2023-02-13 14:22:23
  • 提问者 懒狗不配发财 #2

    还有个问题,如果给'thenanle' 对象添加自己的'catch()' 函数,是不是也能实现捕捉错误的功能?

    2023-02-13 14:24:23
  • 不能哦,thenable对象作为参数传入后,默认只会调用该对象下的then方法,并不会主动调用catch方法,所以这里无法通过给它添加catch方法去捕获错误。

    祝学习愉快~

    2023-02-13 15:27:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师