如何在vo.js for循环中产生多重承诺?

如何在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 
} 
返回所有的然后一起