【发布时间】:2019-08-04 10:14:51
【问题描述】:
假设我们有一个名为logData 的简单函数来处理HTTP 请求。还假设我们有另一个名为logIntoDatabase 的函数。
async logIntoDatabase(message) { ... }
async logData(request, response) {
await logIntoDatabase("something happened");
response("log successful");
}
假设我们不需要确定数据是否已记录到数据库中(我们不需要等待数据库的响应)。所以我们做了一点优化:
async logIntoDatabase(message) { ... }
async logData(request, response) {
logIntoDatabase("something happened");
response("log successful");
}
绝对保证logIntoDatabase 会执行吗? (好像我们在等待它完成)
【问题讨论】:
-
我不明白你在问什么。是的,在第二个示例中,
logIntoDatabase仍将被解雇。它只是不会等待它完成后再触发response。 -
好吧,唯一可以保证的是,如果
logData被调用,logIntoDatabase将被调用。在logData和logIntoDatabase通话的开始之间会出现错误吗?甚至在logIntoDatabase函数中?是的。 -
@zero298 我问这个是因为在 python asyncio 中并非如此。所以我想知道在这种情况下我是否可以信任 nodejs 事件循环。
-
@MinusFour 假设没有错误(我知道,我知道,这是不可能的,但问题的关键是事件循环)。
-
您不需要处理异步函数的返回值(无论是常规回调还是通过 Promise API),就像您不需要处理同步函数的返回值一样.这取决于你。
标签: javascript node.js promise es6-promise