如何在vo.js for循环中产生多重承诺?
问题描述:
基于这个例子 - vo/examples/9-pipeline-composition.js,我如何return yield
这个for循环的每个迭代的承诺?如何在vo.js for循环中产生多重承诺?
目前循环运行一次,并产生一个单一的承诺。
function * get (urls) {
for (var i = urls.length - 1; i >= 0; i--) {
console.log(urls[i])
return yield http.get(urls[i])
}
}
function status (res, params) {
return res.status
}
let scrape = vo(get(['http://standupjack.com', 'https://google.com']), status)
vo([ scrape ])
.then(out => console.log('out', out))
.catch(e => console.error(e))
答
当您在for循环中执行返回时,循环会中断并返回结果,循环将不会向前移动。您可以在处理结果的for循环中调用一个函数,而不返回它。
function * get (urls) {
for (var i = urls.length - 1; i >= 0; i--) {
console.log(urls[i])
let result = yield http.get(urls[i])
yield handleResult(result)
}
}
否则容易u能推每个结果的在阵列中,并在端
function * get (urls) {
let resArr = []
for (var i = urls.length - 1; i >= 0; i--) {
console.log(urls[i])
let result = yield http.get(urls[i])
resArr.push(result)
}
return resArr
}
返回所有的然后一起