资讯专栏INFORMATION COLUMN

对于`Promise`部分属性的理解

琛h。 / 1471人阅读

摘要:对于和的理解今天碰到问题是这样子的调试的时候发现走了也走了有在我印象里是走了就不该走后来发现是我理解错了代码是这样的这个的是里的异常,里如果有任何异常都会被捕获仔细看了是这样解释的简单来讲调用等于调用由于返回的是一个对象,返回值解释如下如果

对于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;

如果抛出异常返回一个执行rejectedPromise对象即相当于调用返回PromisePromise.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)

promise.all()是顺序开始,异步执行,顺序返回
// 示例代码
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

相关文章

  • 从0开始撸一个Promise(一)

    摘要:说白了,就是给声明的添加一个包含空的对象,再由函数返回这个空。如此构成一个层层包裹的链。四首先本质是一个递归函数,结束条件是,即终止到未挂载对象的子为止。可以看到这个函数的作用就是根据属性逐个触发链中的或函数。 背景 Promise是一种非常实用的异步编程方案,本文对于Promise源码的分析可以增进读者对于Promise原理的理解,以后不再害怕异步编程,不用担心callback he...

    MSchumi 评论0 收藏0
  • [译] 深入理解 Promise 五部曲:3. 可靠性问题

    摘要:简单的说,即将到来的标准指出是一个,所以作为一个,必须可以被子类化。保护还是子类化这是个问题我真的希望我能创建一个忠实的给及以下。 原文地址:http://blog.getify.com/promis... 如果你需要赶上我们关于Promise的进度,可以看看这个系列前两篇文章深入理解Promise五部曲--1.异步问题和深入理解Promise五部曲--2.控制权转移问题。 Promi...

    XboxYan 评论0 收藏0
  • Node.js 异步异闻录

    摘要:的异步完成整个异步环节的有事件循环观察者请求对象以及线程池。执行回调组装好请求对象送入线程池等待执行,实际上是完成了异步的第一部分,回调通知是第二部分。异步编程是首个将异步大规模带到应用层面的平台。 showImg(https://segmentfault.com/img/remote/1460000011303472); 本文首发在个人博客:http://muyunyun.cn/po...

    zzbo 评论0 收藏0
  • 浅解Promise

    摘要:对于异步的解决方案是新增的内置对象,通常使用构造函数创建,实例,解决异步问题。构造函数必须接收一个函数作为参数,我将其称为函数,函数也可以接收两个参数,和,它们是两个函数,由运行环境提供,无需自己部署。如何理解规范中的这三个状态及其规则。 对于异步的解决方案 Promise Promise是ES6新增的内置对象,通常使用Promise构造函数创建,Promise实例,解决异步问题。 1...

    summerpxy 评论0 收藏0
  • ES6常用知识点概述

    摘要:那之前的例子来使用一下的话,你会发现浏览器报错了,如图定义的变量不允许二次修改。如图箭头函数没有它自己的值,箭头函数内的值继承自外围作用域。如图这里两边的结构没有一致,如果是的话,是可以正常解构的。 前言 国庆假期已过一半,来篇干货压压惊。 ES6,并不是一个新鲜的东西,ES7、ES8已经赶脚了。但是,东西不在于新,而在于总结。每个学前端的人,身边也必定有本阮老师的《ES6标准入门》或...

    keithyau 评论0 收藏0

发表评论

0条评论

琛h。

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<