Node.js 为什么这个蓝鸟pg代码挂起?
我正试着围绕蓝鸟的承诺来思考,并浏览文档中的一些示例。我当前的代码基于: 产出如预期:Node.js 为什么这个蓝鸟pg代码挂起?,node.js,bluebird,node-postgres,Node.js,Bluebird,Node Postgres,我正试着围绕蓝鸟的承诺来思考,并浏览文档中的一些示例。我当前的代码基于: 产出如预期: 已建立连接 在处理器中 检索到1行 然而,程序永远不会终止。挂断的原因是什么(双关语)?经过一些调查,蓝鸟示例代码似乎被破坏了。getConnection()的正确代码应该是: function getConnection(string) { var close; return pg.connectAsync(string).spread(function(client, done) {
已建立连接
在处理器中
检索到1行
然而,程序永远不会终止。挂断的原因是什么(双关语)?经过一些调查,蓝鸟示例代码似乎被破坏了。
getConnection()
的正确代码应该是:
function getConnection(string) {
var close;
return pg.connectAsync(string).spread(function(client, done) {
close = done;
return client;
}).disposer(function(client) {
console.log('In disposer');
try {
if (close) close(client);
} catch(e) {};
});
};
具体来说,done()
必须在client
对象上调用,disposer函数将该对象作为其第一个参数接收(尽管在本例中被忽略)
function getConnection(string) {
var close;
return pg.connectAsync(string).spread(function(client, done) {
close = done;
return client;
}).disposer(function(client) {
console.log('In disposer');
try {
if (close) close(client);
} catch(e) {};
});
};