es6简易generator 使用
不废话 直接上码
var fs = require('fs');
var co = require('co');
var bluebird = require('bluebird');
var path = require('path');
bluebird.promisifyAll(fs);
co((function* (dir){
var stat = yield fs.statAsync(dir);
if(!stat.isDirectory()){
throw new Error('${dir} is not a directory');
}
var files = yield fs.readdirAsync(dir);
for(var file of files){
stat = yield fs.statAsync(path.join(dir,file));
if(stat.isDirectory()){
(yield fs.readdirAsync(path.join(dir,file))).forEach((item) =>{
files.push(path.join(file,item));
});
}
}
return files;
})('your/dir')).then( (files) =>{
console.log(files);
}).catch((e)=>{
console.error(e);
})
这个一个读取文件夹一下所有文件的一个小程序, 由于直接使用了co,加上bluebird对fs的promise封装,异步写法简直太high了!!! 话说node --harmony至今都没有支持let,class,而iojs竟然还不支持箭头函数,深深的怨念啊。。。
3 回复
你调用Async系了,还yield?
io.js支持胖箭头函数,加上参数 --harmony_arrow_functions 便可 自豪地采用 CNodeJS ionic
@DavidCai1993 恩 ,确实可用,thx