es6简易generator 使用 - CNode技术社区

es6简易generator 使用
发布于 11 年前 作者 joney-pinkman 4609 次浏览 最后一次编辑是 9 年前 来自 分享

不废话 直接上码

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

回到顶部

AltStyle によって変換されたページ (->オリジナル) /