Javascript 如何从数组异步写入JSON文件?
我正在抓取一些数据,并将其推送到任何数组中,从该数组将数据写入JSON文件。当前,每次推送到th数组后,它都会写入JSON文件Javascript 如何从数组异步写入JSON文件?,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我正在抓取一些数据,并将其推送到任何数组中,从该数组将数据写入JSON文件。当前,每次推送到th数组后,它都会写入JSON文件 const myArray = []; const htmlString = await rp(url); $('a','#atozindex', htmlString).map(async (index, element) => { let link = $(element).attr('href'); i
const myArray = [];
const htmlString = await rp(url);
$('a','#atozindex', htmlString).map(async (index, element) => {
let link = $(element).attr('href');
if (link) {
//Do something
myArray.push({ item1, item2, item3 });
fs.writeFile("./arrayContents.json", JSON.stringify(myArray), function(err) {
if(err) {
console.log(err);
}
console.log("Some Message");
});
}
});
return myArray;
当所有数据都已在阵列中时,我只希望在最后推送一次。比如说:
const myArray = [];
const htmlString = await rp(url);
$('a','#atozindex', htmlString).map(async (index, element) => {
let link = $(element).attr('href');
if (link) {
//Do something
myArray.push({ item1, item2, item3 });
}
});
fs.writeFile("./arrayContents.json", JSON.stringify(myArray), function(err) {
if(err) {
console.log(err);
}
console.log("Some Message");
return myArray;
但是我在想这个问题时遇到了一些困难。我想你可以这样做
$.when(mapping()).then(function( ) { // mapping is a function for your map and until it finish then do that ...
});
或
直到地图完成或者完成了,就这样
您可以查看并了解有关何时/then或何时完成的更多信息,请务必测试。。。但我认为您有两个选择-等待所有异步:
const myArray = [];
const htmlString = await rp(url);
$('a','#atozindex', htmlString).map(async (index, element) => {
let link = $(element).attr('href');
if (link) {
//Do something
myArray.push({ item1, item2, item3 });
}
}).forEach(pending => await pending);
fs.writeFile("./arrayContents.json", JSON.stringify(myArray), function(err) {
if(err) {
console.log(err);
}
console.log("Some Message");
return myArray;
或者,删除异步:
const myArray = [];
const htmlString = await rp(url);
$('a','#atozindex', htmlString).map((index, element) => {
let link = $(element).attr('href');
if (link) {
//Do something
myArray.push({ item1, item2, item3 });
}
});
fs.writeFile("./arrayContents.json", JSON.stringify(myArray), function(err) {
if(err) {
console.log(err);
}
console.log("Some Message");
return myArray;
您可能希望使用流来实现这一点。有很多方法可以连接一个可写流,然后根据需要转储任意多个自动序列化的对象。
$
变量是什么?@CertainPerformance这是为ChereIOJS准备的。除了将空数组字符串化并返回它,您从不使用myArray
执行任何操作。你想把它推到什么地方吗?对不起,那是个打字错误,请再检查一遍
const myArray = [];
const htmlString = await rp(url);
$('a','#atozindex', htmlString).map((index, element) => {
let link = $(element).attr('href');
if (link) {
//Do something
myArray.push({ item1, item2, item3 });
}
});
fs.writeFile("./arrayContents.json", JSON.stringify(myArray), function(err) {
if(err) {
console.log(err);
}
console.log("Some Message");
return myArray;