JavaScript — асинхронное чтение нескольких файлов в node.js

Чтение нескольких файлов асинхронно в node.js

Поскольку мы говорим о нескольких файлах, могу ли я предложить создать функцию readAsync и передать ей некоторые параметры (здесь readAsync 'utf8' ) и callback ?

 function readAsync(file, callback) { fs.readFile(file, 'utf8', callback); } 

После этого мы можем map асинхронно и попытаться прочитать содержимое, например так:

 // we're passing our files, newly created function, and a callback async.map(files, readAsync, (err, res) ={amp}gt; { // res = ['file 1 content', 'file 2 content', ...] }); 

Я считаю, что вы можете сократить весь процесс до этого:

 // Let's put everything inside of one function: function testAsync() { const files = ['file1.json', 'file2.json', 'file3.json']; async.map(files, fs.readFile, function (err, data) { for(let file of files) { console.log( file.toString() ); } }); } 

Вот пример кода с использованием Promises:

 function readFromFile(file) { return new Promise((resolve, reject) ={amp}gt; { fs.readFile(file, (err, data) ={amp}gt; { if (err) { console.log(err); reject(err); } else { resolve(JSON.parse(data)); } }); }); } // First, an array of promises are built. // Each Promise reads the file, then calls resolve with the result. // This array is passed to Promise.all(), which then calls the callback, // passing the array of results in the same order. const promises = [ readFromFile('result1.json'), readFromFile('result2.json') // ETC ... ]; Promise.all(promises) .then(result ={amp}gt; { baseList = result[0]; currentList = result[1]; // do more stuff }); 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector