首页 > 其他分享 >web前端 Promise.all、Promise.allSettled方法

web前端 Promise.all、Promise.allSettled方法

时间:2023-02-10 09:12:04浏览次数:38  
标签:web resolve pandaTest2 pandaTest1 Promise reject console allSettled

Promise.allSettled

执行多个Promise对象实例,配合await使用,可以达到等待任务全部完成后再继续执行的效果。
返回值是一个成功的Promise,其内部值为参数中的Promise的执行结果组成的数组。

const pandaTest1 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('pandaTest1 Run');
        //resolve('pandaTest1 resolve');
        reject('pandaTest1 reject');
    }, 1000);
});

const pandaTest2 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('pandaTest2 Run');
        //resolve('pandaTest2 resolve');
        reject('pandaTest2 reject');
    }, 2000);
});

async function main()
{
    try
    {
        //Promise.allSettled 本身返回的是一个Promise对象实例
        //使用await后,返回的是几个参数中的Promise对象实例的结果组成的数组
        let result = await Promise.allSettled([pandaTest1,pandaTest2]);
        console.log(result);
    }
    catch (e) {
        console.error(e);
    }
}

main()

Promise.all

类似Promise.allSettled,区别在于返回结果。
如果参数中的Promise有执行出错,则返回失败的Promise,Promise其内部值为失败的Promise值。
意味着参数中的Promise必须全部执行成功,才能返回成功的Promise,Promise其内部值为一个数组,元素为全部执行成功的Promise的值。

const pandaTest1 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('pandaTest1 Run');
        resolve('pandaTest1 resolve');
        //reject('pandaTest1 reject');
    }, 1000);
});

const pandaTest2 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('pandaTest2 Run');
        resolve('pandaTest2 resolve');
        //reject('pandaTest2 reject');
    }, 2000);
});

async function main()
{
    try
    {
        //使用await后,返回的是几个参数中的Promise对象实例的结果组成的数组
        let result = await Promise.all([pandaTest1,pandaTest2]);
        console.log(result);
    }
    catch (e) {
        console.log(e);
    }
}

main()

标签:web,resolve,pandaTest2,pandaTest1,Promise,reject,console,allSettled
From: https://www.cnblogs.com/cqpanda/p/17085161.html

相关文章

  • 不用Blazor WebAssembly,开发在浏览器端编译和运行C#代码的网站
    本文中,我将会为大家分享一个如何用.NET技术开发“在浏览器端编译和运行C#代码的工具”,核心的技术就是用C#编写不依赖于Blazor框架的WebAssembly以及Roslyn技术。一、为什......
  • 【Web】emscripten编译ffmpeg
    编译命令:emconfigure./configure--cc="emcc"--cxx="em++"--ar="emar"--ranlib=emranlib--prefix=$(pwd)/dist--enable-cross-compile--target-os=none--arch=x86......
  • 解决PyQtWebEngine安装缓慢的问题
    在使用PyQtWebEngine时候,发现pyqt5由于版本高而没有PyQtWebEngine。于是安装但是在使用清华源的时候,发现下载非常慢。我通过各种方式进行测试均需要9小时才能下载。原因未......
  • web.xml文件简述
    tomcat的conf中:是全局配置,配置公共信息。Web项目中:是局部配置,只针对本项目有效。加载顺序:ServletContext->context-param->listener->filter->se......
  • python bottle实现web服务
    server:当调用http://xxx.xxx.xxx.xxx:4500/push时就会触发get_push函数frombottleimportrun,route,requestimportloggingimporttimeimportosfilename=s......
  • 用变量生成数据库web sql database 及操作需要JSON.stringfy/parse来操作
    用变量生成数据库web sql database 及操作需要JSON.stringfy/parse来操作:var newstr = 'checkbox0,input1,textarea2,option3,date4,flag'var newdatastr = ......
  • celery僵死导致jumpserver提示 连接WebSocket失败
    celery僵死导致jumpserver提示连接WebSocket失败Celery的任务监控位于堡垒机”作业中心“下的”任务监控“中,点击打开新的页面如下图所示刷新页面这里的status状态一......
  • flask web 项目7 web基本配置
    #配置文件config.py#扩展文件 目的是为了解决循环引用exts.pyfromflask_sqlalchemyimportSQLAlchemydb=SQLAlchemy()#在models.py中fromextsimportdbcla......
  • Web3.0 - 以太坊
    1.比特币和以太坊比特币和以太坊(准确说是以太币)是两种最主要的加密货币。比特币的最小计量单位是聪(Satoshi)【中本聪SatoshiNakamoto】以太币的最小单位是Wei,这个单......
  • webview2
    webview2简介MicrosoftEdgeWebView2简介搭建开发环境webview2支持的平台还是比较多的,本文对wpf框架进行说明。简单来说:安装Edge浏览器安装webview2(win11都默认......