exports.getOrder = function(id) {
return getCache(id)
.then(function(cache) {
return [
getCustomer(cache.customer),
getInfo(cache.customer)
];
})
.spread(mergeData)
}
function mergeData(a, b) {
return a;
}
为什么我使用传播获得类型错误的任何想法?这两个函数(getCustomer
,getInfo
)都返回Q.Promise
。
编辑:
exports.getOrder = function(id) {
return getCache(id)
.then(function(cache) {
return Q.all([getCustomer(cache.customer),getInfo(cache.customer)]);
})
.spread(mergeAuditData)
}
我也用这种方式测试了但没有成功和相同的结果。
EDIT2:
exports.getOrder = function(id) {
return getCache(id)
.then(function(cache) {
return Q.all([
getCustomer(cache.customer),
getInfo(cache.customer)
]);
})
.then(function(a) {
return a // contains: [[result Customer], [result Info]]
})
.catch(function(err) {
console.log(err);
})
}
EDIT3:
exports.getOrder = function(id) {
return getCache(id)
.then(function(cache) {
return [
getCustomer(cache.customer),
getInfo(cache.customer)
];
})
.spread(function(a,b) {
console.log(a);
console.log(b);
return a
})
.catch(function(err) {
console.log(err);
})
}
Edit4:
function getCache(id) {
return Cache.findOne({id:id});
}
Edit5:
function getCache(id) {
var query = Cache.findOne({id:id});
return query.exec();
//return Q(11061);
}
答案 0 :(得分:0)
虽然我没有测试,但您可以尝试用
替换您的代码module.exports.getOrder = function(id) {
return getCache(id)
.then(function(cache) {
return [
getCustomer(cache.customer),
getInfo(cache.customer)
];
})
.spread(function(a,b) {
console.log(a);
console.log(b);
return a
})
.catch(function(err) {
console.log(err);
})
}