gpt4 book ai didi

javascript - 如何使用 Promise.all() 和异步循环?

转载 作者:行者123 更新时间:2023-12-01 03:01:52 24 4
gpt4 key购买 nike

我正在尝试了解 Promise 以及如何在异步循环上使用它们。

我收集了以下代码来读取三个文件的内容(使用 forEach),并在所有 promise 解析时记录所有文件的输出:

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()

我尝试了这段代码,但它记录了一个空数组。

我做错了什么?

最佳答案

您将回调与 Promise 混合,使用 Array#map 创建 Promise 数组并将其传递给 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)
});

关于javascript - 如何使用 Promise.all() 和异步循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46395375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com