我正在尝试从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)
}
如何将输出流式传输到数组。
答案 0 :(得分:0)
您可以将async-await
与BPromise.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
节点模块。