使用q.all,似乎我的数组中的直接函数没有执行 . 这些函数应该创建一个已解决的promise,将其打印到控制台,然后返回它 . 我没有看到控制台输出,但是Q.all看起来很满意,然后用2个空值触发'then' . 这有什么问题?谢谢!
var Q = require("q");
var p = Q('Q');
console.log('hi p='+ JSON.stringify(p.inspect()));
return Q.all([
function(){
var a = Q('A');
console.log('thing A: '+JSON.stringify(a.inspect()));
return a;
},
function(){
var b= Q('B');
console.log('thing B: '+JSON.stringify(b.inspect()));
return b;
}
]).then(
function(r){
console.log('A and B are done: '+JSON.stringify(r));
}
)
1 回答
是 . Q.all不期望一系列函数,而是一组承诺!
你应该自己执行它们,
Q.all
不需要(不应该)知道承诺的来源 . 它们可能不是每次都在动态创建的,有些应用程序使用很久以前创建的promises .不完全是 .
Q.all
不仅接受该数组中的promise,还接受任意值,这些值自动包含在promises中 . 这意味着你的代码等于将两个使用函数解析的promise作为结果值,然后在r
数组中传递给你的回调 . 它是JSON.stringify()
产生空值,它们实际上是函数 . 请改为console.log('A and B are done', r)
.