javascript - 完成多个 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');
}
这种语法不起作用,但是有什么可以吗?
解决方案
Use Promise.race()
,它接受一组承诺并返回一个承诺,无论哪个先发生,都会解决或拒绝:
async function run() {
await Promise.race([clickCheckmark(), respond()]);
send('hi');
}
推荐阅读
- spring-boot - 合并来自两个不同服务器的日志
- python-3.x - 检查目标时出错:预期 conv2d 有 4 个维度,但得到了具有形状的数组
- reactjs - 测试一个笑话模拟函数本身
- python - TypeError: 'encoding' is an invalid keyword argument for this function - 我该如何解决?
- react-native - React Native - 异常'- [NSNull length]:在调用multiSet时抛出无法识别的选择器发送到实例0x1e6c059b0'
- php - 没有函数的字符串执行
- firebase - Firebase 网络挂钩
- python - 为什么 pandas.series.describe 和 pandas.series.describe() 给出不同的结果?
- c - Linux sound programming. How to determine a buffer size in frames?
- rest - 奇怪的 IIS/WCF Web 服务问题