med*_*nzo 0 javascript node.js promise bluebird
我正在尝试了解 Promise 以及如何在异步循环上使用它们。
我收集了以下代码来读取三个文件的内容(使用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)
});
Run Code Online (Sandbox Code Playgroud)
我不知道如何将循环放入.all()
我尝试了这段代码,但这记录了一个空数组。
我究竟做错了什么?
您将回调与承诺混合在一起,使用创建一个承诺数组Array#map
并将其传递给Promise.all
:
var files = ['1.json', '2.json', '3.json'];
var promises = files.map(file => {
return new Promise((resolve, reject) => {
fs.readFile(path.join('./',file), 'utf8', (err, data) => {
if (err) {
return reject(err);
}
resolve(data);
});
});
});
Promise.all(promises).then(function(values){
console.log(values)
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9818 次 |
最近记录: |