我試圖圍繞Promises和如何在異步循環中使用它們。如何使用Promise.all()和異步循環?
我收集了下面的代碼讀取的三個文件(使用forEach
),當所有的承諾內容解析記錄所有文件的輸出:
var Promise = require('bluebird');
var fs = require('fs');
var path = require('path');
var files = ['1.json','2.json','3.json'];
var promises = []
files.forEach(function(file){
fs.readFile(path.join('./',file), 'utf8', function(err,data){
promises.push(new Promise(function(resolve, reject){
resolve(data)
})
);
})
});
Promise.all(promises).then(function(values){
console.log(values)
});
我不知道如何把內環路.all()
我試過這段代碼,但是這記錄了一個空的數組。
我在做什麼錯?
一)不使用'forEach'(但更好'map') b)你'*'推動諾言異步,當'Promise.all'接收它時,數組是空的。立即構建承諾,並且只異步解析* – Bergi