0
点赞
收藏
分享

微信扫一扫

VSCODE include错误 找不到 stdio.h

在这里插入图片描述

文章目录

前言

在本栏前一篇Promise.all中,我们可以实现多个并发Promise的运行。但是,在有的时候我们或许要实现多个Promise中只取完成最快的Promise。这时我们可以使用Promise中另外一个API——Promise.race

初识Promise.race

我们在获取多个Promise其中的一个时:

  • 我们有一个词语“门闩(shuan)”,(我也是问了一下度娘,嘻嘻);
  • 又有些像操作系统中,我们在并发进程里叫的“互斥”(即每次只让一个进程运行);
  • 但在Promise中我们称为“竞态”

好吧,名称只需要记忆即可,我们来正式认识这个API。

探索Promise.race

Promise.race()和Promise.all()一样也接受单个数组参数(数组可以是Promise、立即值),立即值在这里没有意义,因为它会立即决议

    Promise.race([]).then(
      function(msg){
        console.log(msg)
      },
      function(err){
        console.error(err)
      }
    )
    //控制台不输出

而Promise.all中的行为却表现的相反:

    Promise.all([]).then(
      function(msg){
        console.log(msg)
      },
      function(err){
        console.error(err)
      }
    )
    //控制台输出[]

API实例

回顾之前Promise解决信任问题的一个代码:

function timeoutPromise(delay){
	return new Promise(function(resolve,reject){
		setTimeout(function(){
			reject("超时了");
		},delay)
	})
})

下面我们用这个代码和Promise.race同用,看看会出现什么效果:

Promise.race([
	test(),
	timeoutPromise(3000)
]).then({
	function(){
		//只有没有超时才会进入
	}
	function(err){

	}
})

看来这个API至少可以为我们提供设置超时的功能。

举报

相关推荐

0 条评论