首页 > 解决方案 > 如何处理可能导致死锁的承诺

问题描述

假设我有一个带有关键部分的 nodejs 应用程序,我想在其中规范对一些数据结构的访问。在本节中,我使用 promise 创建对服务器的休息调用,并且我需要响应来决定如何退出这个关键部分。在承诺本身中,我必须使用一个仍然使用回调的库。在极少数情况下,服务器似乎超载,我根本没有得到响应。结果,应用程序卡在了 Promise 内,因此卡在了关键部分内,从而导致了死锁。有什么办法可以防止这种行为?将setTimeout添加到 Web 请求并取消响应超时是否是一种好方法?

标签: node.jspromisedeadlock

解决方案


你可以只使用 SetTimeout。

new Promise((Resolve,Reject) => {
    doHttpRequest(callback)
    // if it takes too long, we will reject before it is resolved.
    setTimeout(() => { Reject("Timeout") },3000)
})

推荐阅读