如何从request.get流数据并推送到数组[nodejs]

时间:2018-10-14 05:54:02

标签: node.js

我正在尝试从request.get进行连续流,然后将数据推送到数组。在下面的代码中,数据被推送到一个数组,但是当我打印该数组时,它包含的元素要多。

var arrItem=[]    
for (a=0; a< array.length; a++){   
        var uri = "http://localhost:8080/getItem"
          await new Promise(function (resolve, reject) {
            var respt= request.get(
              uri , function (error, response, body) {
              }).on('data', function(data,error) {          
              if(error){
                reject(error);
              } else {
                arrItem.push(data)
                resolve(data)
                // console.log('decoded chunk: ' + data)
              }
            }).pipe()

          });
          console.log(arrItem.length)
        }

如何将输出流式传输到数组。

1 个答案:

答案 0 :(得分:0)

您可以将async-awaitBPromise.all一起使用以达到结果:

const BPromise = require('bluebird');
async function getItem() {
  const arrItem = await BPromise.all(
    array.map( (item) =>  
      request.get(
        uri , function (error, response, body) {
        }).on('data', function(data,error) { return data}).pipe()
    ));
    return arrItem;
};
console.log(getItem());
  

安装bluebird节点模块。