javascript - 如何使用 vo.js 在 for 循环中产生多个 Promise?

标签 javascript node.js for-loop promise flow-control

基于此示例 - vo/examples/9-pipeline-composition.js ,我如何为这个 for 循环的每次迭代返回产量一个 promise ?

目前,循环运行一次并产生一个 promise 。

 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循环中执行return时,循环会中断并返回结果,并且循环不会继续前进。您可以在 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)
  }
}

或者你可以将每个结果推送到一个数组中,然后在最后一起返回所有结果

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
}

关于javascript - 如何使用 vo.js 在 for 循环中产生多个 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487612/

相关文章:

iOS Swift Parse 此查询具有出色的网络连接。你必须等到它完成

javascript - 允许小数比的 ng-pattern

node.js - 使用 fluent-ffmpeg 和 NodeJS 来加速转换的视频

node.js - 如何在nodeJS中使用异步处理错误?

java - 仅使用 For 循环的两个整数的幂之和

Java - 对于基类集合中的每个派生类

javascript - 从 <script> 标签获取值到 Odoo 12 中的 t t-esc 标签

javascript - 在监听更改时查询多个键 - Firebase

javascript - Android 上的语音识别 API 重复短语

node.js - 如何使 Typescript/ts-node 接受后向断言(ECMAScript 2018 功能)?