摘要:对于和的理解今天碰到问题是这样子的调试的时候发现走了也走了有在我印象里是走了就不该走后来发现是我理解错了代码是这样的这个的是里的异常,里如果有任何异常都会被捕获仔细看了是这样解释的简单来讲调用等于调用由于返回的是一个对象,返回值解释如下如果
对于Promise.then()和Promise.catch()的理解
今天碰到问题是这样子的:
调试bug的时候发现axios走了then也走了有catch,在我印象里是走了then就不该走catch(后来发现是我理解错了)
代码是这样的
this.axios.post("/user/login", params) .then(res => { console.log("response", res) }) .catch(err => { // 这个catch catch的是then里的异常,then里如果有任何异常都会被catch捕获 console.log("catch") console.error(err.message) })
仔细看了Promise.catch()MCDN是这样解释的
The catch() method returns a Promise and deals with rejected cases only. It behaves the same as calling Promise.prototype.then(undefined, onRejected) (in fact, calling obj.catch(onRejected) internally calls obj.then(undefined, onRejected)).
简单来讲调用Promise.catch()等于调用Promise.prototype.then(undefined, onRejected)
由于Promise.then()返回的是一个Promise对象,返回值解释如下:
throws an error, the promise returned by then gets rejected with the thrown error as its value;
如果抛出异常返回一个执行rejected的Promise对象即相当于调用返回Promise的Promise.then(undefined, onRejected)
对于Promise.catch()的返回值是这样解释的:
The Promise returned by catch() is rejected if onRejected throws an error or returns a Promise which is itself rejected; otherwise, it is resolved.
如果Promise.catch()又抛出异常则相当于又调用Promise.then(undefined, onRejected)
如果未抛出异常则相当于调用Promise.then(onResolved,undefined)
// 示例代码 const getRandom = () => +(Math.random()*1000).toFixed(0); const asyncTask = taskID => new Promise(resolve => { let timeout = getRandom(); console.log(`taskID=${taskID} start.`); setTimeout(function() { console.log(`taskID=${taskID} finished in time=${timeout}.`); resolve(taskID) }, timeout); }); Promise.all([asyncTask(1),asyncTask(2),asyncTask(3)]) .then(resultList => { console.log("results:",resultList); });
详见这里
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93153.html
摘要:说白了,就是给声明的添加一个包含空的对象,再由函数返回这个空。如此构成一个层层包裹的链。四首先本质是一个递归函数,结束条件是,即终止到未挂载对象的子为止。可以看到这个函数的作用就是根据属性逐个触发链中的或函数。 背景 Promise是一种非常实用的异步编程方案,本文对于Promise源码的分析可以增进读者对于Promise原理的理解,以后不再害怕异步编程,不用担心callback he...
摘要:简单的说,即将到来的标准指出是一个,所以作为一个,必须可以被子类化。保护还是子类化这是个问题我真的希望我能创建一个忠实的给及以下。 原文地址:http://blog.getify.com/promis... 如果你需要赶上我们关于Promise的进度,可以看看这个系列前两篇文章深入理解Promise五部曲--1.异步问题和深入理解Promise五部曲--2.控制权转移问题。 Promi...
摘要:的异步完成整个异步环节的有事件循环观察者请求对象以及线程池。执行回调组装好请求对象送入线程池等待执行,实际上是完成了异步的第一部分,回调通知是第二部分。异步编程是首个将异步大规模带到应用层面的平台。 showImg(https://segmentfault.com/img/remote/1460000011303472); 本文首发在个人博客:http://muyunyun.cn/po...
摘要:那之前的例子来使用一下的话,你会发现浏览器报错了,如图定义的变量不允许二次修改。如图箭头函数没有它自己的值,箭头函数内的值继承自外围作用域。如图这里两边的结构没有一致,如果是的话,是可以正常解构的。 前言 国庆假期已过一半,来篇干货压压惊。 ES6,并不是一个新鲜的东西,ES7、ES8已经赶脚了。但是,东西不在于新,而在于总结。每个学前端的人,身边也必定有本阮老师的《ES6标准入门》或...
阅读 2655·2023-04-26 01:00
阅读 685·2021-10-11 10:59
阅读 2920·2019-08-30 11:18
阅读 2644·2019-08-29 11:18
阅读 984·2019-08-28 18:28
阅读 2983·2019-08-26 18:36
阅读 2090·2019-08-23 18:16
阅读 1023·2019-08-23 15:56