首页 > web前端 > js教程 > Node.js 中解雇和忘记 Promise 可以接受吗?

Node.js 中解雇和忘记 Promise 可以接受吗?

Linda Hamilton
发布: 2024-11-30 18:39:11
原创
360 人浏览过

Is Firing and Forgetting Promises in Node.js Acceptable?

Node.js (ES7) 中的 Fire and Forget Promise

Node.js 中的异步编程通常涉及使用 Promise。 Promise 表示异步操作的最终完成或失败。在某些情况下,您可能希望启动异步操作而不等待其完成。这被称为“解雇并忘记”承诺。

考虑以下代码片段:

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();
登录后复制

在异步函数中,您可以在不使用await 的情况下执行第一行。这会创建一个 Promise 并立即丢弃它。

这是可以接受的吗?

是的,可以通过这种方式执行异步任务。通过触发并忘记 Promise,两个异步函数(Promise 创建和函数 someOtherAsyncFunction)将同时执行。

处理错误

这种方法的一个潜在问题是如果 delAsync 创建的 Promise 被拒绝,您将不会收到通知。这可能会导致未处理的拒绝,最终使您的进程崩溃。

忽略结果的替代方案

如果您不关心异步操作的结果,有几种处理方法:

  • Void运算符: 使用 void 运算符丢弃结果:

    void (await someAsyncFunction());
    登录后复制
  • 捕获并忽略: 使用带有空的 catch 方法忽略异常handler:

    ... someAsyncFunction().catch(function ignore() {}) ...
    登录后复制
  • 并行执行: 如果您仍想等待其他异步操作但不关心特定操作的结果,请使用Promise.all 带有一个array:

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;
    登录后复制

结论

虽然在 Node.js 中可能会触发并忘记 Promise,但请务必注意忽略拒绝相关的潜在风险。在使用此技术之前,请仔细考虑您是否真的不关心异步操作的结果。此外,还有其他方法可用于处理不感兴趣的结果。

以上是Node.js 中解雇和忘记 Promise 可以接受吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板