JavaScript 使用async-await解释Promise.race()方法

JavaScript 使用async-await解释Promise.race()方法

在本文中,我们将尝试理解如何使用async-await在JavaScript中实现Promise.race()方法,并通过一些编码示例和理论解释来帮助理解。让我们先快速了解一下如何实现Promise.race()方法。这个方法是最常用的promise方法之一,它声明无论哪个promise先达到终点,首先将被执行,而其余的promise将保持未执行状态。这实际上也可以理解为谁先达到比赛终点谁就赢得比赛,这里的概念也是相同的。

语法: 以下语法将帮助我们理解如何实现Promise.race()方法:

Promise.race([first_promise , second_promise, ...]).then(
    // do something......
)

让我们看一个以下所示的Promise.race()方法语法的示例,以更好地理解:

示例1: 在这个示例中,我们将一个接一个地创建三个带有计时器函数(setTimeout()方法)的promise。每个计时器函数都会在其说明的末尾指定不同的时间。然后,我们将使用Promise.race()方法,该方法会将这三个promise作为数组的形式输入,并根据自己的角色执行它们。

Javascript

let first_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("GeeksforGeeks...!!");
    }, 1000);
});
 
let second_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("JavaScript......!!");
    }, 2000);
});
 
let third_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("TypeScript...!!");
    }, 3000);
});
 
let promise_array = [first_promise, second_promise, third_promise];
Promise.race(promise_array).then((result) => console.log(result));

输出:

GeeksforGeeks...!!

现在我们已经理解了如何执行Promise.race()方法,让我们看一个示例,帮助我们理解如何使用async-await关键字实现Promise.race()方法。

示例2: 像前面的示例一样,我们将创建三个带有不同计时器函数和不同超时时间的promise。然后,我们将创建一个具有前缀 async 的函数(或方法),并在其中使用另一个关键字 await 存储结果,然后使用then()方法显示结果。

Javascript

let first_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("GeeksforGeeks...!!");
    }, 1000);
});
 
let second_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("JavaScript......!!");
    }, 2000);
});
 
let third_promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("TypeScript...!!");
    }, 3000);
});
 
 
async function displayResult() {
    let promise_array = [first_promise, second_promise, third_promise];
    let result = await promise_array;
    Promise.race(promise_array).then((result) => console.log(result));
}
 
displayResult();

输出:

GeeksforGeeks...!!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程