javascript使用promise递归读取目录下所有文件

来源:互联网 发布:家境一般出国留学知乎 编辑:程序博客网 时间:2024/06/04 19:10

如题,主要是为了练习一下promise的使用。之前一直不知道promise对象的then函数还可以返回promise对象,以便达到链式调用的效果。
下面上代码,以记之~~~

var fs = require('fs');var path = require('path');function readdirPromisify(dir) {    return new Promise((resolve, reject) => {        fs.readdir(dir, (err, list) => {            if (err) {                reject(err);            }            resolve(list);        });    });}function statPromisify(dir) {    return new Promise((resolve, reject) => {        fs.stat(dir, (err, stats) => {            if (err) {                reject(err);            }            resolve(stats);        });    });}function listDir(dir) {    return statPromisify(dir).then(stats => {        if (stats.isDirectory()) {            return readdirPromisify(dir).then(list =>                 Promise.all(list.map(item =>                     listDir(path.resolve(dir, item))                ))            ).then(subtree => [].concat(...subtree));        } else {            return [dir];        }    });}
0 0
原创粉丝点击