gpt4 book ai didi

javascript - JavaScript : How to get resolve value for all promises? 中的 Promise.all

转载 作者:数据小太阳 更新时间:2023-10-29 04:23:28 24 4
gpt4 key购买 nike

我编写了以下 node.js 文件:

var csv = require('csv-parser');
var fs = require('fs')
var Promise = require('bluebird');
var filename = "devices.csv";
var devices;

Promise.all(read_csv_file("devices.csv"), read_csv_file("bugs.csv")).then(function(result) {
console.log(result);
});


function read_csv_file(filename) {
return new Promise(function (resolve, reject) {
var result = []
fs.createReadStream(filename)
.pipe(csv())
.on('data', function (data) {
result.push(data)
}).on('end', function () {
resolve(result);
});
})
}

如您所见,我使用 Promise.all 来等待读取 csv 文件的两个操作。我不明白为什么,但是当我运行代码时,行 'console.log(result)' 没有提交。

我的第二个问题是我希望 Promise.all.then() 的回调函数接受两个不同的变量,而每个变量都是相关 promise 的结果。

最佳答案

第一个问题

Promise.all 采用一组 promise

改变:

Promise.all(read_csv_file("devices.csv"), read_csv_file("bugs.csv"))

到(在参数周围添加 [])

Promise.all([read_csv_file("devices.csv"), read_csv_file("bugs.csv")])
// ---------^-------------------------------------------------------^

第二个问题

Promise.all 为您传递给它的每个 promise 解析结果数组。

这意味着您可以将结果提取到变量中,例如:

Promise.all([read_csv_file("devices.csv"), read_csv_file("bugs.csv")])
.then(function(results) {
var first = results[0]; // contents of the first csv file
var second = results[1]; // contents of the second csv file
});

你可以使用 ES6+ destructuring进一步简化代码:

Promise.all([read_csv_file("devices.csv"), read_csv_file("bugs.csv")])
.then(function([first, second]) {

});

关于javascript - JavaScript : How to get resolve value for all promises? 中的 Promise.all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643386/

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