Javascript 如何使用vo.js在for循环中产生多个承诺?
基于此示例-,我如何Javascript 如何使用vo.js在for循环中产生多个承诺?,javascript,node.js,for-loop,promise,flow-control,Javascript,Node.js,For Loop,Promise,Flow Control,基于此示例-,我如何返回该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.statu
返回该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)
}
}
Orelse 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
}