采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
视频的好像是ajax请求异常了才会触发catch,而不是执行reject后触发的catch getData(url) .then(() => { }, () => {}) .catch(err => {})
我记的是resolve执行会触发then中的第一个参数函数,reject会触发then中第二参数函数 而caitch会捕捉执行过程中发生的错误,比如ajax请求中请求异常、变量为定义就使用等等,当然可以通过throw new Error(“xxx”)手动抛出异常错误
catch 也会捕获到 rejcet 的报错,你可以亲自试试。
是的,catch可以捕获所有能捕获到的错误,报错reject触发的 但我犯了一个很大的错误,我以为所有错误catch都能捕捉到,使用了catch就没必要使用reject,我查阅后发现一些报错,比如异常报错,catch并不能捕获到
可以给一段代码,我具体看看。
const getData = (url) => { return new Promise((resolve, reject) => { $.ajax({ type: 'GET', url, success: (res) => { resolve(res) }, error: (err) => { console.log('onerror') reject(new Error('reject error')) throw new Error('throw error') } }) }) } const url1 = '../data/json.json' getData(url1) .then((data) => { console.log('resolve ', data) }, (err) => { console.log('reject = ', err) }) .catch((err) => { console.log('catch ', err) }) 我启动的本地服务,url1是个错误链接,请求404,所以会触发ajax的error的回调,在error回调里我分别: 1、执行reject,参数是一个error对象 2、通过throw抛出一个Error 最后控制台结果只触发了then中传的reject处理函数,然后抛出一个错误throw error,并没有触发catch中的处理函数
如果我说的是对的话,是不是在ajax请求错误回调onerror函数中执行reject(err)就是多余无用的
登录后可查看更多问答,登录/注册
针对时下面试高频考点,帮助新人js面试快速通关
1.7k 17
1.9k 11
1.4k 11
1.3k 11
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号