1
我試圖圍繞藍鳥承諾包裹我的頭,並通過文檔中的一些示例。我當前的代碼是基於this example:不出所料爲什麼藍鳥pg代碼掛起?
var Promise = require('bluebird');
var pg = Promise.promisifyAll(require('pg'));
var using = Promise.using;
function getConnection(string) {
var close;
return pg.connectAsync(string).spread(function(client, done) {
close = done;
return client;
}).disposer(function() {
console.log('In disposer');
try {
if (close) close();
} catch(e) {};
});
};
using(getConnection('/var/run/postgresql dc'), function(conn) {
console.log('Got a connection');
return conn.queryAsync('SELECT 1');
})
.then(function(rows) {
console.log('Retrieved %s row(s)',rows.rowCount);
});
輸出:
Got a connection
In disposer
Retrieved 1 row(s)
但是,程序永遠不會終止。什麼是掛斷(雙關語意)?