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 });
|