javascript - 有什么方法可以导出生成器函数?

标签 javascript generator koa co

一个例子

generator.js:

exports.read = function *(){
  var a = yield read('co.github.js');
  var b = yield read('co.recevier.js');
  var c = yield read('co.yield.js');
  console.log([a,b,c]);
}

function read(file) {
  return function(fn){
    fs.readFile(file, 'utf8', fn);
  }
}

co.js:

var co = require('co');
var fs = require('fs');
var gen = require('./generator')
/*function read(file) {
  return function(fn){
    fs.readFile(file, 'utf8', fn);
  }
}*/

co(gen.read)()

exports 似乎不支持生成器函数。

require, module, __filename, __dirname) { module.exports.read = function *(){
                                                                          ^
SyntaxError: Unexpected token *
at exports.runInThisContext (vm.js:69:16)
    at Module._compile (module.js:432:25)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:349:32)
    at Function.Module._load (module.js:305:12)
    at Function.Module.runMain (module.js:490:10)
    at startup (node.js:123:16)
    at node.js:1027:3

我为什么要这样做?我只想将我的数据与 Controller 分开。有什么办法解决吗?

最佳答案

你可以使用一个变量来存储它,然后导出它:

var myGenerator = function *() {
    // ...
}

module.exports = myGenerator;

然后,在另一个文件中,您可以要求它:

var myGen = require('./myfirstfile.js');
// myGen is now myGenerator from above

关于javascript - 有什么方法可以导出生成器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388514/

相关文章:

javascript - 模态(LeanModal)按Esc键关闭

javascript - 尝试对基于回调的函数进行 thunkify 以与生成器(yield)一起使用,不起作用

javascript - 如何更改 Koa 的非定义路由的 http 状态码

node.js - 如何使用 koa 在 Node.js 中使用基本身份验证处理多个静态凭据

php - 反向preg_replace

javascript - 让 koa.js 在加载时执行某些操作(而不是根据请求)

javascript - 特定分辨率时隐藏html元素

javascript - Node.js package.json 是否需要位于存储库的根目录?

javascript - 关于 JavaScript 函数参数

python - 截断 python 生成器