• 【前端开发】Promise几种常见用法


    1、Promise.all()

    ABC都成功时才能拿到返回值

    Promise.alll() 具有并发执行异步任务的能力。但它的最大问题就是如果参数中的任何一个promise为reject的话,则整个Promise.all() 调用会立即终止,导致数据都无法返回。
    可以用于接口返回值有依赖的情况下使用

    Promise.all([
        api.getUserInfo(), //接口
        api.getMemberInfo(),//接口
        api.getFocusedWechat(),//接口
    ]).then(res =>{
        if (res[0].code === 0) {
            console.log('success0')
        }
        if (res[1].code === 0) {
            console.log('success1')
        }
    }).catch((res)=> {
        console.log('errorAll')
    })

    2、Promise.race()

    依次执行、最新返回的Promise是成功的即可拿到返回值,后面promie执行失败即打断执行

    如果最先返回的Promise请求是success状态,则不管其他请求是否成功,都能获取到返回值。

    const promises = [
      new Promise((resolve, reject) =>
        setTimeout(() => resolve('result'), 100)), // (A)
      new Promise((resolve, reject) =>
        setTimeout(() => reject('ERROR'), 200)), // (B)
      new Promise((resolve, reject) =>
        setTimeout(() => resolve('result'), 300)), // (C)
    ];
    Promise.race(promises)
      .then((result) => assert.equal( // (D)
        result, 'result'));

    3、Promise.allSettled()

    ABC全部处理完不管成功失败都能拿到每个Promise的返回状态

    作用跟Promise.all() 类似,不同点在于,它不会进行短路。也就是说当Promise全部处理完成后,我们可以拿到每个Promise的状态,而不管是否处理成功。

  • 相关阅读:
    Oracle9i数据库移动过程
    基于索引的SQL语句优化之降龙十八掌
    activex发布步骤
    用ftpsupport进行ftp上传
    周五晚上看了变形金刚
    故宫游
    UTF8转GB2312
    跨数据库的视图【自己留着看】
    数学之美 - 布隆过滤器(Bloom Filter)【转】
    搜索引擎优化SEO的ppt讲义
  • 原文地址:https://www.cnblogs.com/xiaohuizhang/p/16050554.html
Copyright © 2020-2023  润新知