为什么循环交换值而不是一个接一个地写下来

  • 本文关键字:一个 循环 交换 node.js
  • 更新时间 :
  • 英文 :


我遇到了一个问题,在执行循环时,它将一个值加载到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个网络请求是一个批量,如果你一个接一个地执行它们,根据你连接的端点,你可能会因为滥用而被阻止。

相关内容

最新更新