ノードにスクリプトを書き込んで、指定されたURLの配列にファイルがあるかどうかを確認してから取り出します。私はそれを非同期にしたいと思います。フォルダの内容を非同期的にチェックしてファイルのパスを返す
const fs = require('fs-extra');
function getFiles(pathArr = []) {
return new Promise((resolve, reject) => {
let filesArr = pathArr.filter(obj => {
return fs.lstatSync(obj, (err, stat) => {
if (err) {
return false;
}
return stat.isFile();
});
});
resolve(filesArr);
});
}
しかし、それはfs.lstatSync
を使用して、私は(.then()
用法)非同期メソッドとしてそれを使用できるようにfs.lstat
を使用したい:私の知る限りは、適切な機能を開発することができたとして
。 pathArr
引数は、ファイルまたはフォルダであるかどうかを確認するURL(文字列)の配列です。
助けてください!あなたがasync.series、async.map、async.eachのいずれかを使用することができますどのようにこの程度
const fs = require('fs-extra');
function getFiles(pathArr = []) {
var promises = [];
return new Promise((resolve, reject) => {
let filesArr = pathArr.filter(obj => {
promises.push(fileStat(obj));
});
Promise.all(promises).then(function (result) {
resolve(result);
});
});
}
function fileStat(obj) {
return new Promise((resolve, reject) => {
return fs.lstat(obj, (err, stat) => {
if (err) {
reject(err);
}
resolve(stat.isFile())
});
});
}
これはほとんど私が探していたものです。唯一の違いは、 'fileStat'メソッドは、フィルタメソッドのようなurls自体ではなく、真偽の文を返しますが、私はそれを自分で処理すると思います! – mrmnmly
うれしい;) –