在JavaScript中解释Promise.race()与async-await
我们将在本教程中学习Promise.race()方法。正如race()方法的名字所示,作为race()方法的参数传递的承诺会做比赛执行。
因此,无论哪个承诺先被解决,都将只由race()方法执行,而其他承诺将永远不会被执行。
Promise.race()
JavaScript中的Promise.race方法允许你等待一组承诺中的第一个被履行或拒绝,并处理发生的结果或错误。只要有一个输入的承诺被履行或拒绝,它就会返回一个被履行或拒绝的承诺,以及该承诺的值或原因。
用户可以按照下面的语法,使用promise.race()方法来执行第一个已解决的承诺。
在上面的语法中,Promise.race()方法将iterable作为第一个参数,我们可以在’then’块中处理成功执行的承诺的响应。
这里iterable采取可迭代的对象,比如一个承诺数组,以执行其中的任何承诺,哪个先结算。
语法
下面是你如何在JavaScript中使用Promise.race方法和async-await的语法。
这里,promise1 ,promise2 ,等等是你要等待的承诺。Promise.race方法返回一个被解决或被拒绝的承诺,该承诺带有第一个被解决或被拒绝的输入承诺的值或原因。
异步函数的例子使用try/catch语句来处理错误情况,如果任何输入承诺被拒绝,catch块将被执行。
示例 1
在这个例子中,我们创建了多个承诺,并在承诺中设置了定时器来解决或拒绝这些承诺。我们把承诺的数组作为race()方法的参数传递给它。
输出显示,race()方法执行了被拒绝的承诺,因为它没有定时器。所以,race()方法执行的是第一个承诺,它被提前履行了,即使被拒绝或解决。
示例 2
在这个例子中,我们采用了不同的API,并使用fetch方法做了一个承诺。我们有一个名为request的许诺数组。
我们使用race()方法来解决所有的请求,无论哪个承诺将首先解决,我们都在’then’块内打印出URL。
当用户需要使用第一个已解决的承诺的响应时,可以使用race()方法,即使是被拒绝或被解决。如果用户需要使用第一个成功解决的承诺的结果,他们应该使用 promise.any()方法。