Javascript 在使用该变量之前,如何等待函数(toString())完成?

Javascript 在使用该变量之前,如何等待函数(toString())完成?,javascript,node.js,json,stream,Javascript,Node.js,Json,Stream,我尝试将缓冲区转换为字符串,并尝试将其解析为Json。但有时它试图在字符串操作完成之前转换为Json 在下面的代码中,我试图将变量dat中的缓冲区数据转换为字符串,并将其解析为JSON。所以有时候JSON.parse会抛出错误(需要解析的JSON格式不完整) 请某人帮助我如何等待toString函数完成其过程此方法的问题是,您将以块的形式接收响应,默认值为16KB,因此如果您的json大于此值,它将以多个块的形式出现 修复算法的一种方法是将所有这些块存储到单独的数组中,并在流结束事件后对其进行解

我尝试将缓冲区转换为字符串,并尝试将其解析为Json。但有时它试图在字符串操作完成之前转换为Json

在下面的代码中,我试图将变量dat中的缓冲区数据转换为字符串,并将其解析为JSON。所以有时候JSON.parse会抛出错误(需要解析的JSON格式不完整)


请某人帮助我如何等待toString函数完成其过程此方法的问题是,您将以块的形式接收响应,默认值为16KB,因此如果您的json大于此值,它将以多个块的形式出现

修复算法的一种方法是将所有这些块存储到单独的数组中,并在流结束事件后对其进行解析:


这种方法的缺点是,它不适用于超过1.7GB的非常大的文件,因为它们无法放入内存。

这种方法的问题是,您将以块的形式接收响应,默认值为16KB,因此如果json大于16KB,它将以多个块的形式出现

修复算法的一种方法是将所有这些块存储到单独的数组中,并在流结束事件后对其进行解析:


这种方法的缺点是,它不适用于超过1.7GB的非常大的文件,因为它们无法放入内存。

在告诉
writer
流如何处理流之前,访问流不是一个问题吗?将
管道
移动到
编写器之后。在
声明中更改了什么?我很好奇,从来没有使用过axios。在被告知如何处理流之前访问
writer
流不是一个问题吗?将
管道
移动到
编写器之后。在
声明中更改了什么?从未使用过axios,我很好奇。
var apicall = {
    url: API,
    method: 'post',
    responseType: 'stream',
    headers: {
        'Content-Type': 'application/json',
    },
    data: body
}
axios(apicall).then((res) =>{
   var writer = new MemoryStream(null, {
       readable : true
   })
   res.data.pipe(writer)
   writer.on('data',function(dat){  
       console.log(dat);
       var e = dat.toString();
       var jsondata = JSON.parse(e);
       console.log(jsondata);
   });
}).catch((e)=>{
    console.log(e);
})
let body = [];
writer.on('data', (chunk) => {
  body.push(chunk);
}).on('end', () => {
  body = Buffer.concat(body).toString();
  // at this point, `body` has all the chunks stored in as a string
  // here you will be able to JSON.parse the body
  const json = JSON.parse(body);
});