javascript generators开源项目genify

14-05-28 banq
         

genify是一个javascript generators框架,能将强大的generators异步带入普通JS编码中,以同步顺序编程风格编制出异步运行代码。

Generators是Javascript的一种协同程序( coroutine 简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配以星号符号形式如function* ,函数内有些特征关键词如yield 和yield*。

具体见:generator介绍

使用genify的代码如下:


var Q = require('q');
var fs = require('fs');
var genify = require('genify');

// wrap your object into genify function
var object = genify({
concatFiles: function * (file1, file2, outFile) {
file1 = yield Q.nfcall(fs.readFile, file1);
file2 = yield Q.nfcall(fs.readFile, file2);
var concated = file1 + file2;

yield Q.nfcall(fs.writeFile, outFile, concated);

return concated;
}
});

// concatFiles是一个generator函数,
// 可以使用promises处理结果和错误
object.concatFiles('./somefile1.txt', './somefile2.txt', './concated.txt').then(function (res) {
// do something with result
}, function (err) {
// do something with error
});