Я пробовал обещание сингборта узла, я не могу использовать разрешение & отклонить в тогда функциях. ниже мой код, который вызывает PromiseКак реализовать обещание bluebird в nodejs
modules.modelClip.exGetAllClips(sUserData)
.then(function(finalResult) {
console.log("Final result " + finalResult)
})
.error(function(e) {
console.log("Error handler " + e)
})
.catch(function(e) {
console.log("Catch handler " + e)
});
и функция exGetAllClips Возвращает обещание.
exports.exGetAllClips = function(pUserData) {
console.log("--- inside : clipModel : exGetAllClips -----------------------------------------------------");
console.log(pUserData);
return new modules.promise(function(resolve, reject) {
modules.dbConnection.getConnection(function(rErrorCon, connection) {
if (rErrorCon) {
reject(rErrorCon);
} else {
resolve(connection);
}
});
}).then(function(connection) {
console.log('Result 4 ')
var sClipQuery = "CALL spGetAllClips(?)";
var query = connection.query(sClipQuery, [pUserData.selfId
]);
query.on('error', function(err) {
// Handle error, an 'end' event will be emitted after this as well
//return err;
console.log(" error : spGetAllClips : ",err);
reject(err);
}).on('result', function(row) {
console.log("row : ", JSON.stringify(row));
resolve(row);
}).on('end', function() {
// all rows have been received
connection.release();
})
});
};
Я хочу, чтобы бросить ошибку из .then
, если существует. Но не в состоянии сделать это, он бросает ошибку отклонения undefined
.
Пожалуйста, помогите, как реализовать этот или любой другой способ.
да это то, что я хочу, даже я упомянул аналогичный пример, http://zpalexander.com/blog/javascript-promises-node-js/ – pitu