如果我在异步调用中省略“await”,操作仍然会完成吗?

Vil*_*lx- 7 javascript node.js promise async-await

这是关于 Javascript 和最新的 Node.JS。

我有一个异步操作(在这种特殊情况下通过 Axios 库进行 HTTP 调用,但问题是一般性的)。我不在乎该操作的结果是什么。如果成功了——那就太好了。如果失败了——无论如何。但我知道这可能需要一段时间才能完成,我不能等那么久。所以我想“一劳永逸”。

await现在,第一个想法就是从通话中删除。我会得到一个Promise我很快就会忘记的东西,并且操作将按照自己的条件完成。我认为这应该可行,但是......感觉有点不对劲。我无法指出它,但它让我烦恼。

这是安全的,还是我应该更好地保留并Promise在计时器或其他东西中检查其结果,即使我不会对它们做任何事情?

tri*_*cot 6

如果您对成功 HTTP 请求的通知不感兴趣,您仍然需要考虑当 HTTP 请求由于某种原因失败时会发生什么(服务器没有响应、没有互联网连接……)。

你不需要保留一个promise对象,你甚至不需要async,但你至少应该处理一个promise拒绝,否则你会得到一个“未处理的promise拒绝”异常。

所以这样做:

fetch(url).catch(err => { /* deal with error */ });
Run Code Online (Sandbox Code Playgroud)

如果您也不关心错误(我对此表示怀疑),那么您可以这样做:

fetch(url).catch(Boolean);
Run Code Online (Sandbox Code Playgroud)

这样你就留下了一个永远不会拒绝的承诺。所以你可以忽略它。