首页 > 解决方案 > 完成多个 Promise 中的任何一个后继续执行 (JavaScript)

问题描述

我现在正在编写一个打字稿不和谐机器人,但这个问题与打字稿或不和谐.js 无关。我将使用机器人的参考来解释它:

一旦用户单击反应或在聊天中发送“我同意”,我有一个机器人需要触发一些命令。一旦其中任何一个为真,则应执行下一个命令。以下是一些背景信息:

//We already have two functions that we can await for each event (clicks checkmark or responds)
//We can use them using await, because we are in an async function

async function run(){

await clickCheckmark() || respond()
send('hi');
}

这种语法不起作用,但是有什么可以吗?

标签: javascriptasynchronousasync-await

解决方案


Use Promise.race(),它接受一组承诺并返回一个承诺,无论哪个先发生,都会解决或拒绝:

async function run() {
    await Promise.race([clickCheckmark(), respond()]);
    send('hi');
}

推荐阅读