我习惯于接受用户请求,处理它并回应结果。
但是,我有一个API端点,需要对各种数据库,日志记录,电子邮件等进行大约10件事。所有这些都是异步的。只有第一个数据库调用需要成功才能使用户获得响应。其余的可以继续。
问题是整个过程可能需要10/20秒,因此用户在第一次数据库查询(大约100毫秒)后只需要他们的答案时等待10/20秒。
我基本上需要
我正在使用异步等待所有异步调用并表达为我的Web框架。
答案 0 :(得分:2)
因为您说过"只有第一个数据库调用需要成功才能让用户获得响应。其余的可以继续。"我想你已经得到了你需要的东西,所以假设你正在使用异步等待,让我们这样做:
async function requestHandler(req){
await result = firstDatabaseRequestThatIsImportant();
setOfAsyncFunctions(result);
return result;
}
async function setOfAsyncFunctions(result){
asyncFunction1(?????)
asyncFunction2(?????)
}
所以基本上不要在setOfAsyncFunctions
上使用等待,以便此函数将在不同的线程中运行,您可以立即将结果返回给用户。也许这可以帮助您解决问题陈述?