node.js - 如何处理可能导致死锁的承诺
问题描述
假设我有一个带有关键部分的 nodejs 应用程序,我想在其中规范对一些数据结构的访问。在本节中,我使用 promise 创建对服务器的休息调用,并且我需要响应来决定如何退出这个关键部分。在承诺本身中,我必须使用一个仍然使用回调的库。在极少数情况下,服务器似乎超载,我根本没有得到响应。结果,应用程序卡在了 Promise 内,因此卡在了关键部分内,从而导致了死锁。有什么办法可以防止这种行为?将setTimeout添加到 Web 请求并取消响应超时是否是一种好方法?
解决方案
你可以只使用 SetTimeout。
new Promise((Resolve,Reject) => {
doHttpRequest(callback)
// if it takes too long, we will reject before it is resolved.
setTimeout(() => { Reject("Timeout") },3000)
})
推荐阅读
- scala - Spark scala:-在reduceByKey中尝试使用if语句的方式出现错误
- html - Bootstrap - 表单控件输入同一行中的按钮
- sql - 在 SAS (PROC SQL) 中创建串联汇总数据
- android - 如果 windowTranslucentStatus 为 false,则不会调用键盘的 onApplyWindowInsets
- python-3.x - 如何在 matplotlib/networkx 中包装标记标签
- php - 添加内联脚本的更好方法是什么?
- performance - Xeon CPU (E5-2603) 向后内存预取
- c# - Unity3D 协程和 lambda 回调,安全性
- python - 如何使用 Python 访问 JSON 子数据
- java - 通过检查光标是否为空来设置 textview 和 recycleview 的可见性