【发布时间】:2018-09-24 01:03:59
【问题描述】:
我正在尝试实现 RPC 代理。代理接受命令,将它们发送到 RPC 服务器,等待结果,然后将结果发送给客户端。我的做法是这样的伪代码:
function onClientCommand(cmd) {
sendCommandToRPCServer.then(function(result){
returnResultToClient(cmd.client,result)
})
}
如您所见, sendCommandToRPCServer 返回一个承诺。我希望这个函数被非常频繁地调用(每秒数千次调用)。当系统负载过重时,RPC 服务器会变慢,Broker 内存中未解决的 Promise 会越来越多。
所以我的问题是:
如果代理在超时后拒绝承诺,这是否会从内存中删除承诺(例如,其解析和拒绝函数及其上下文,没有对该承诺的引用)?我知道我可以通过一系列回调来解决这个问题并定期清除它的旧项目,但是“类似承诺”的方法对我来说更好,因为有时代理需要等待几个 RPC 调用然后将结果返回给客户端,这更容易承诺。
【问题讨论】:
标签: javascript node.js promise garbage-collection