gpt4 book ai didi

javascript - Node 和 express 。返回给用户并继续执行

转载 作者:行者123 更新时间:2023-12-01 02:15:50 24 4
gpt4 key购买 nike

我习惯于接受用户请求、处理它并响应结果。

但是,我有一个 API 端点,其中需要对各种数据库、日志记录、电子邮件等执行大约 10 件事情。所有这些都是异步的。只有第一个数据库调用需要成功,用户才能获得响应。其余的可以继续。

问题是整个过程可能需要 10/20 秒,因此用户在第一次数据库查询(大约 100 毫秒)后只需要答案时需要等待 10/20 秒。

我基本上需要

  • 用户提出请求
  • 发生异步数据库调用
  • 如果失败,则会向用户发出错误,但如果成功,则会返回成功
  • 用户可以自由地继续执行他们需要的操作,但服务器会继续进行一些其他数据库调用

我对所有异步调用使用 async wait 并表达为我的 Web 框架。

最佳答案

因为您说过“只有第一个数据库调用需要成功,用户才能获得响应。其余的可以继续。”我想你已经得到了你需要的东西,所以假设你正在使用 async wait,让我们这样做:

async function requestHandler(req){
await result = firstDatabaseRequestThatIsImportant();
setOfAsyncFunctions(result);
return result;
}

async function setOfAsyncFunctions(result){
asyncFunction1(?????)
asyncFunction2(?????)
}

所以基本上不要在setOfAsyncFunctions上使用await,这样该函数将在不同的线程中运行,并且您可以立即将结果返回给用户。也许这会对您的问题陈述有所帮助?

关于javascript - Node 和 express 。返回给用户并继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49510269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com