zoukankan      html  css  js  c++  java
  • es6 Promise.all() 和 Promise.race() 区别

    Promise.all() 方法接收单个可迭代对象(如数组)作为参数,并返回一个promise。每个Promise都用一个数值进行了决议,对Promise.all() 的调用创建了新的 Promise p4。这些值的存储顺序保持了待决议(resolve)的Promise顺序,与完成的先后顺序无关,因此可以将结果匹配到每个Promise。如果任意Promise被拒绝,则p4会立即拒绝,不必等其他 Promise结束。

    /* eslint-disable prefer-promise-reject-errors,eol-last */
    let p1 = new Promise((resolve, reject) => resolve(42))
    let p2 = new Promise((resolve, reject) => reject(43))
    let p3 = new Promise((resolve, reject) => resolve(44))
    
    let p4 = Promise.all([p1, p2, p3])
    let p5 = Promise.all([p1, p3])
    p1.then(v=>console.log('p1 then: ' + v)) // p1 then: 42
    p4.then(v=>console.log('p4 then: ' + v)) // 不执行
    p4.catch(v=>console.log('catch: ' + v)) // catch: 43 p2被拒绝,p4的拒绝处理函数立即调用,不会等p1和p3结束执行。但p1和p2仍然会执行。
    p5.then(v=>{
      console.log(Array.isArray(v)) // true
      console.log(v) // [ 42, 44 ]
    })

     Promise.race()

    监视多个Promise。接受一个包含需监视的Promise的可迭代对象,并返回一个新的Promise,但一旦来源Promise中有一个被解决,所返回的Promise就会立刻被解决。

    let r1 = Promise.resolve('r41')
    let r11 = Promise.reject('r41')
    let r2 = new Promise((resolve, reject) =>{
      resolve('r42')
    })
    let r3 = new Promise((resolve, reject) =>{
      reject('rejcet43')
    })
    let r4 = Promise.race([r1, r2, r3])
    r4.then(v=>console.log('r4: ' + v)) // r4: r41
    
    let r5 = Promise.race([r2, r3])
    r5.then(value => console.log('then:' + value)) // then:r42
    r5.catch(value => console.log('catch:' + value)) // 不执行
    
    let r6 = Promise.race([r11, r2, r3])
    r6.then(v=>console.log('r6 then: ' + v))
    r6.catch(v=>console.log('r6 catch: ' + v)) // r6 catch: r41
  • 相关阅读:
    python---1
    20190802—list、range、extend函数
    20190802—def定义函数
    20190802—import函数调用
    如何在EXCEL中将多个单元格内容合并到一个单元格中
    20190619—return函数的用法
    20190618—位置参数、默认参数、不定长参数
    excel 怎么计算单元格个数
    20190616——and和or使用方法、python运算符总结、python数据类型
    20190616——enumerate的用法
  • 原文地址:https://www.cnblogs.com/dodocie/p/9055256.html
Copyright © 2011-2022 走看看