Javascript 在使用该变量之前,如何等待函数(toString())完成?
我尝试将缓冲区转换为字符串,并尝试将其解析为Json。但有时它试图在字符串操作完成之前转换为Json 在下面的代码中,我试图将变量dat中的缓冲区数据转换为字符串,并将其解析为JSON。所以有时候JSON.parse会抛出错误(需要解析的JSON格式不完整)Javascript 在使用该变量之前,如何等待函数(toString())完成?,javascript,node.js,json,stream,Javascript,Node.js,Json,Stream,我尝试将缓冲区转换为字符串,并尝试将其解析为Json。但有时它试图在字符串操作完成之前转换为Json 在下面的代码中,我试图将变量dat中的缓冲区数据转换为字符串,并将其解析为JSON。所以有时候JSON.parse会抛出错误(需要解析的JSON格式不完整) 请某人帮助我如何等待toString函数完成其过程此方法的问题是,您将以块的形式接收响应,默认值为16KB,因此如果您的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);
});