highland.js获取json数组并在值流中进行转换

highland.js fetch json array and transform in stream of values

本文关键字:转换 获取 js json 数组 highland      更新时间:2023-09-26

我试图从外部API获取一个JSON数组,然后一次发出该数组的一个元素。然而,我的实现似乎在某个地方失败了,我得到的是错误,而不是阵列

'use strict';
const request = require('request-promise'),
    H = require('highland');
H(request('http://jsonplaceholder.typicode.com/users'))
  .map(x => x.toString('utf8'))
  .tap((data) => {
      let acc = [];
      data = JSON.parse(data);
      data.forEach((entry) => {
          acc.push(entry);
      });
      return H(acc);
  })
  .each(user => console.log(user.id))// would expect that this logs 1,2,3,4
  .done(data => {
    console.log(data)
});

您可能得到的是大块数据,而不是完整的响应,这意味着JSON.parse试图解析不完整的JSON。也许试试这样的东西?

H(request('http://jsonplaceholder.typicode.com/users'))
  .collect()
  .map(Buffer.concat)
  .flatMap(x => JSON.parse(x.toString('utf8')))
  .each(user => console.log(user.id))
  .done(data => console.log('DONE'));