嗨,所以我一直在嘗試使這個嘗試使用異步模塊並不真正知道如何將其轉換爲一個試圖承諾它並沒有真正工作,我認爲我做錯了所以我恢復的功能,它是在第一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
一個解決方案:[只有在異步獲取請求完成時繼續循環](http://stackoverflow.com/questions/33662425/only-continue-for-loop-when-async-get-request-finishes/33662492#33662492) – jfriend00