读取 root 目录下文件,讲非文件夹的文件名压入数组,最后返回
function readdir(root) {
return new Promise(
(resolve, reject) => {
fs.readdir(root, (err, files) => {
if (err) {
reject(err);
} else {
var folderdata = [];
files.forEach(file => {
var ps = path.join(root, file);
var stat = fs.statSync(ps);
if (!stat.isDirectory(file)) {
file = path.basename(file);
folderdata.push(file);
}
})
resolve(folderdata)
}
})
}
)
}
var fs2 = readdir(root).then((folderdata) => {
console.log(folderdata)
});
这样打印
[ '.DS_Store',
'.babelrc',
'app.js',
'package.json',
't2.js',
'test.js',
'test2.js' ]
我想将这数组直接赋值给 fs2 ,应该怎么修改代码呢
1
learnshare 2017-02-06 21:24:48 +08:00
```js
var fs2 = []; readdir(root).then((folderdata) => { fs2 = folderdata; // do something else }); ``` |
2
bdbai 2017-02-06 21:35:02 +08:00 via Android
这里读取目录是异步操作,封装在 Promise 对象中,只能用过调用 then 传入回调函数来获得结果。直接赋值得到的还是 Promise 对象。
fs 模块的函数一般都有 Sync 形式,但会阻塞线程。 |
3
wizardforcel 2017-02-06 22:41:53 +08:00 via Android
不明白为什么 readdir 用异步但是 stat 用同步。。
|
4
arzusyume 2017-02-07 09:33:40 +08:00
node7 可以 fs2 = await readdir(root)
|