javascript - 如果我在异步调用中省略“等待”,操作是否仍会完成?
问题描述
这是关于 Javascript 和最新的 Node.JS。
我有一个异步操作(在这种特殊情况下通过 Axios 库进行 HTTP 调用,但问题是一般性的)。我不在乎该操作的结果是什么。如果它成功 - 很好。如果它失败了 - 无论如何。但我知道这可能需要一段时间才能完成,我不能等那么久。所以我想“解雇并忘记”。
现在,第一个想法是简单地await
从调用中删除。我会得到一个Promise
我很快就会忘记的东西,并且该操作将按自己的条件完成。我认为这应该可行,但是...感觉有点不对劲。我不能把我的手指放在它上面,但它困扰着我。
这是安全的,还是我最好还是坚持Promise
并在计时器或其他东西中检查它的结果,即使我不会对它们做任何事情?
解决方案
如果您对成功的 HTTP 请求的通知不感兴趣,您仍然必须考虑 HTTP 请求由于某种原因失败时会发生什么(服务器没有响应,没有互联网连接,...)。
你不需要保留一个 Promise 对象,你甚至不需要async
,但你至少应该处理一个 Promise 拒绝,否则你会得到一个“未处理的 Promise Rejection”异常。
这样做:
fetch(url).catch(err => { /* deal with error */ });
如果您也不关心错误(我对此表示怀疑),那么您可以这样做:
fetch(url).catch(Boolean);
这样你就得到了一个永远不会拒绝的承诺。所以你可以忽略它。
推荐阅读
- angular - 对象数组上的角度输入搜索字段
- python - 如何使 3D 散点图彩条调整为 Z 轴大小?
- python - Mayavi 如何显示轴网格
- google-apps-script - 从 Google Apps 脚本重复调用 Calendar.Events.list 会产生不同的结果
- node.js - 如何提供 reCaptcha 解决的证明
- node.js - 如何将有关用户的额外信息添加到 Firebase 项目中
- css - 无论使用css的屏幕大小如何,如何将图标放在同一个位置?
- angular - 如何使用keycloak在角度4中的每个路由级别进行身份验证和授权
- node.js - Stop-Process 不停止进程
- mongodb - MongoDB“Starting new replica set monitor for”消息含义