ES6+ | promise.race特性与实用场景

文章目录

  • 前言
  • 特性
  • 实用场景

前言

本文将简单介绍promise.race的特性和简单的实用场景。(在网上看到过,使用promise.race请求有最大请求上线的接口,但这块个人没有相关实践,期待各位大佬补充)
本文依然使用setTimeout代表异步操作,涉及的异步操作如下

function httpAction(){
    let p =new Promise(function(resolve,reject){
        setTimeout(() => {
            resolve('request completed')
        }, 3000);
    })
    return p;
}
function httpErrAction(){
    let p =new Promise(function(resolve,reject){
        setTimeout(() => {
            reject('request failed')
        }, 4000);
    })
    return p;
}

function testApi(){
    let p = new Promise(function(resolve,reject){
        setTimeout(()=>{
            resolve('接口请求超过2秒')
        }, 2000)
    })
    return p
}

特性

Promise.race只返回第一个执行完毕的promise的结果,无论结果是fullfilled还是rejected。

Promise.race([httpAction(),httpErrAction()]).then(res => {
    console.log(res);   
  }).catch(err=>{
      console.log(err);    
  });

输出:
在这里插入图片描述

实用场景

promise.race可以用于快捷地测试接口反应速度,

  Promise.race([httpAction(),testApi()]).then(res => {
    console.log(res);   
  }).catch(err=>{
      console.log(err);    
  });

输出:
在这里插入图片描述

你可能感兴趣的:(ES6+)