【发布时间】:2015-03-27 05:44:05
【问题描述】:
如何在下面的代码中使用 Promises?
function async_f1(callback) {
setTimeout(function() {
callback("Async function 1...");
}, 1000);
}
function async_f2(callback) {
setTimeout(function() {
callback("Async function 2!...");
}, 1000);
}
function async_f3(callback) {
setTimeout(function() {
callback("Second async function 3!...");
}, 1000);
}
function doAll() {
async_f1(function(result1) {
async_f2(function(result2) {
async_f3(function(result3) {
console.log("Final result:", result1 + " " + result2 + " " + result3);
})
})
});
}
doAll();
谢谢
【问题讨论】:
-
你没有任何异步函数。只需将
setTimeout()替换为Q.delay()。 -
是的,你是对的。我曾尝试在那里模拟一个异步函数,如果我失败了,你能告诉我如何使用正确的异步函数来做到这一点吗?
-
我使自己的异步函数与 node.js 异步调用样式兼容,回调的第一个参数是错误代码(0 = 无错误),随后的参数是结果,那么你可以很容易使用 Q 或 Bluebird 函数自动生成任何方法的异步版本。如果你不让你的异步函数与调用风格兼容,那就有点麻烦了。
标签: javascript node.js promise q