Привет, поэтому я пытался сделать это, попробовав использовать асинхронный модуль, на самом деле не знал, как преобразовать это в один из попыток, обещающий, что он действительно не работает, я думаю, что я сделал это неправильно поэтому я вернулся функция к тому, как это было в первомNodeJS Ожидание асинхронной функции для завершения foreach
в основном я хочу подождать до ReadJson() функция выполняются с чтением всех файлов JSon, которые находятся в массиве, то делает другие функции, такие как editjson и т.д.
Код:
App.js
const Reader = require('./Reader');
Reader.ReadJson();
Reader.js
const fsp = require('fs-promise');
const JsonFiles = ['json1.json', 'json2.json', 'json3.json', 'json4.json'];
const JsonContents = [];
class Reader {
static ReadJson() {
JsonFiles.forEach(name => {
let FileDir = "D:\\Development\\Java\\" + name;
fsp.readJson(FileDir).then(contents => {
if (contents) {
JsonContents.push(contents);
console.log(`Loaded >> ${name} ${Reader.JsonContents.length}/${JsonFiles.length}`);
}
});
});
console.log('Done Reading Json Content!');
//Other functions
}
}
Reader.JsonContents = JsonContents;
module.exports = Reader;
Так в основном выход:
Done Reading Json Content!
Loaded >> json1.json 1/4
Loaded >> json2.json 2/4
Loaded >> json3.json 3/4
Loaded >> json4.json 4/4
Когда мне нужно, чтобы это было:
Loaded >> json1.json 1/4
Loaded >> json2.json 2/4
Loaded >> json3.json 3/4
Loaded >> json4.json 4/4
Done Reading Json Content!
Спасибо :)
http://stackoverflow.com/questions/18983138/callback-after-all-asynchronous-foreach-callbacks-are-completed? –
Есть десятки вопросов с более чем десятками ответов здесь уже на stackoverflow о том, как упорядочить цикл асинхронных операций, подобных вашим. Я предлагаю вам найти их и учиться у них. – jfriend00
Одно решение: [Только для цикла цикла, когда запрос async get request завершается] (http://stackoverflow.com/questions/33662425/only-continue-for-loop-when-async-get-request-finishes/33662492#33662492) – jfriend00