यदि कोई विधि एक एकल तर्क के साथ एक नोड "गलती" है - इसे then
में बिना किसी पैरामीटर के हल किया जाएगा या वैकल्पिक रूप से err
. के साथ खारिज कर दिया जाएगा इसे पारित कर दिया। प्रॉमिसिफिकेशन के मामले में, आप इसे .error
. से पकड़ सकते हैं या Promise.OperationalError
. के साथ कैच का उपयोग करें ।
यहाँ एक आसान तरीका है:
function getConnection(){
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret'
});
return connection.connectAsync().return(connection); // <- note the second return
}
getConnection().then(function(db){
return db.queryAsync(....);
}).error(function(){
// could not connect, or query error
});
यदि यह कनेक्शन प्रबंधित करने के लिए है - मैं Promise.using
. का उपयोग करूंगा - यहाँ एपीआई से एक नमूना है:
var mysql = require("mysql");
// uncomment if necessary
// var Promise = require("bluebird");
// Promise.promisifyAll(mysql);
// Promise.promisifyAll(require("mysql/lib/Connection").prototype);
// Promise.promisifyAll(require("mysql/lib/Pool").prototype);
var pool = mysql.createPool({
connectionLimit: 10,
host: 'example.org',
user: 'bob',
password: 'secret'
});
function getSqlConnection() {
return pool.getConnectionAsync().disposer(function(connection) {
try {
connection.release();
} catch(e) {};
});
}
module.exports = getSqlConnection;
जो आपको ऐसा करने देगा:
Promise.using(getSqlConnection(), function(conn){
// handle connection here, return a promise here, when that promise resolves
// the connection will be automatically returned to the pool.
});