我遇到了一个问题,在执行循环时,它将一个值加载到JSONA中,每次循环都会用新的值替换,上一个值就会消失。这是我的代码:
for(let i = 0; i < 3000; i++) {
const byUriArray = uriArray.map(nonceBsc => uris2[i].uri)
const byIdArray = uriArray.map(nonceBsc => uris2[i].tokenId)
const data = await axios.get(link + byUriArray[i]);
console.log(data);
fs.writeFileSync("newOgs.json", (JSON.stringify(data.data)));
}
writeFileSync
会将文件的内容设置为您传递的第二个参数。如果文件中以前有任何内容,则会将其丢弃。
如果您想将所有结果保存到文件中,您必须将结果数组放入内存,然后写入整个数组:
const results = [];
for (let i = 0; i < 3000; i++) {
const byUriArray = uriArray.map(nonceBsc => uris2[i].uri)
const data = await axios.get(link + byUriArray[i]);
results.push(data.data);
}
fs.writeFileSync("newOgs.json", JSON.stringify(results));
或者,由于您要发出大量请求,也许还可以在每次迭代中调用writeFileSync
,这样,如果出现错误,您就可以继续,而不是从头开始。
你可能还想在循环中添加一个延迟-3000个网络请求是一个批量,如果你一个接一个地执行它们,根据你连接的端点,你可能会因为滥用而被阻止。