Просто для справки. Я демонстрирую способ сделать любую асинхронную функцию для обещания.
const fs = require('fs');
const writeFile = function(file, data, options){
new Promise((resolve,reject) => {
fs.writeFile(file, data, options, (err) => {
if(err){
return reject(err);
}
return resolve();
});
});
}
Теперь вы можете использовать эту функцию writeFile
следующим образом
writeFile(filePath, data, options)
.then(() => {
// operation successful, handle your logic here
}).catch((e) => {
// something is wrong, handle the error here.
});
Один развы знаете, как работает обещание, тогда действительно просто преобразовать асинхронные функции.
Чтобы использовать эту функцию в Promise.all
, мы можем сделать следующее:
Promise.all([
writeFile(...), // pass your arguments here
...list.map(element => { // convert list to an array of promises
// use the function to create a promise as following,
// make sure to match the arguments as per your need
return writeFile(element.filePath, element.data, element.options);
})
]).then((v) => {
console.log(v);
});
Чтобы подвести итог происходящемуздесь мы создаем массив обещаний и передаем его в функцию Promise.all
.И мы создаем массив обещаний, используя базовую функцию writeFile
, которая возвращает обещание и разрешается после записи файла.Мы используем оператор растяжения es6 ...
, чтобы распространить элементы объекта list
.
Я надеюсь, что это может помочь кому-то в будущем.