zoukankan      html  css  js  c++  java
  • promise中all和race的区别

    1:promise.all(a,b)——会将a,b的参数都一起返回(所用时间为a+b)
    2:promise.race(a,b)——会将定时器时间执行时间短的参数返回

    把以下代码放在调试工具,看打印结果的先后顺序,以及打印时间就能明白了

    const moviePromise = new Promise((reslove, reject) => {
                setTimeout(() => {
                    reslove({ name: '摔跤吧!爸爸', rating: 9.2, year: 2016 })
                }, 2000);
     
            })
            const usersPromise = new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve(['mojobo', 'vanpelt', 'wycats']);
                }, 1000);
            })
            // all的方法为两者promised都为reslove,才执行then的内容
            // 但是如果其中一个promise的返回结果为reject,执行catch里的内容
            Promise.all([moviePromise, usersPromise]).then(resposes => {
                console.log(resposes,'1');
                // resposes为一个为对象,一个为数组
            }).catch(error => {
                console.error(error,'2');
            });
            // race方法执行的结果由第一个promise的结果来决定的,
            // 遇到reject就直接执行catch,遇到resolve就直接执行then
            Promise.race([moviePromise, usersPromise]).then(resole => {
                // 如果 moviePromise 返回的是reject内容,usersPromise为resolve
                // 返回的resole为一个数组。因为先执行为usersPromise
                // 如果 usersPromise 返回的是reject内容,usersPromise返回是第一个,注意执行毫秒。
                //moviePromise 为resolve
                // 应该执行catch的内容
                console.log(resole,'3');
            }).catch(error => {
                console.error(error,'4');
            })
  • 相关阅读:
    pyinstaller安装和使用
    django项目结构和运行项目
    安装django and 创建项目
    浅谈网络请求基础(理论篇)
    浅谈爬虫初识
    判断是否AVL平衡二叉书
    用递归方法判断两棵树是否相等
    广度优先搜索求树的深度
    堆排序
    归并排序
  • 原文地址:https://www.cnblogs.com/yixiongqiang/p/13740555.html
Copyright © 2011-2022 走看看