javascript - 在javascript中终止挂起的 promise

标签 javascript node.js asynchronous

我有一个 javascript 程序,我想通过从 RabbitMQ 提供输入来不断执行它。问题是它偶尔会无限期挂起并阻止整个执行。我最初的想法是使用 Promise.race 在特定时间后超时并让下一条消息进入,但损坏的 Promise 本身仍在后台某处运行并且永远不会结束。在这个设计中,我将开始生成“僵尸”Promise,它们最终会吃掉我的系统资源(因为我的应用程序一直在运行)。我真的无法控制这个程序。没有像 abort() 函数这样的东西可以发送给它。所以我的问题是: 有没有办法杀死 Promise 并将其从事件循环中完全移除?

如果不可能,那么如何生成第二个 nodejs 程序作为子进程并在出现问题时将其终止?它会正确清理我的系统资源吗?

最佳答案

Is there a way to kill the Promise and remove it from event loop completely?

没有。 Promises 表示异步任务的结果,它们不知道任务本身,因此无法取消它。

If it is not possible, then how about spawning second nodejs program as a child process and kill it if is something goes wrong?

这将是一个选项,但生成一个进程是一项繁重的操作,因为它需要自己的运行时/内存等。所以你不应该经常这样做。

相反,您可以管理 cancellation of the underlying asynchronous task .这取决于实际任务是否可行。

关于javascript - 在javascript中终止挂起的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57019085/

相关文章:

node.js - 从 npm 而不是工作区安装 yarn 包

c# - Lazy<> 和 Task<> 可以组合起来推迟数据库查找吗?

javascript - 如何延迟提交表格?

javascript - Highcharts:如何消除堆叠条形/列之间的微小空间

javascript - 使用 ng-repeat 迭代 AngularJS 中的数组

javascript - 在 JavaScript 中用下划线替换空格?

javascript - 在 Socket.io 基本聊天应用程序中添加聊天机器人

mysql - res.cookie() 在与 mysql 连接后没有

javascript - 如何用类比来解释 JavaScript 的单线程特性?

python - 分布式 TensorFlow [异步,图间复制] : which are the exactly interaction between workers and servers regarding Variables update