我正在学习JS的承诺,并在我对事物的理解方面取得了一些进展,但不确定如何将其与return
和Q.all
所以说我有一个函数:(getParentsForLocation
返回一个承诺)
function doBusiness() {
return Q.all(
locations.map(function(item, currentIndex) {
return getParentsForLocation(item.id)
.then(function(res) {
return checkParent(res, currentIndex)
}
});
}))
.then(_.uniq(locations))
}
然后跟着这个,即在该地图遍历locations
数组中的所有元素之后,我想运行下划线的uniq
函数:_.uniq(someArrayIHave);
Q.all([])
中? \ doBusiness()
函数执行某些操作,例如返回一些承诺,但不确定那会是什么样的?任何帮助表示感谢。
非常感谢。
答案 0 :(得分:1)
我是否需要将其放在
中Q.all(…)
?
是。你的map()
电话会给你一系列承诺。
如果是这样,它会顺序运行该数组中的每个方法吗?
没有。或者至少,我们不知道,他们可以在内部做任何事情。
我认为我需要对
doBusiness()
函数执行某些操作,例如回报一些承诺
是。从我的promise rules of thumb:如果函数执行异步操作,它必须返回一个promise。对于两个回调函数也是如此。
看起来怎么样?
function doBusiness() {
return Q.all(locations.map(function(item, currentIndex) {
// ^^^^^^ ^^^^^^
return getParentsForLocation(item.id)
// ^^^^^^
.then(function(res) {
return updateDB(res, currentIndex);
// ^^^^^^
});
}));
// ^
}