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) {};
    });
};