我想制作一个由许多控制器使用的公共模块,我写的是这样的:
//module.js
export.node = function(that){
return co(function*(){
.....
var data = {
name:"xx"
};
return data;
})
}
//controller.js
var dataUtil = require('../module');
var _data = dataUtil(this);
还有其他解决方案吗?
答案 0 :(得分:1)
您无需将您的生成器包裹在co
中;你可以简单地用yield *
把它带进来,所以:
// utils/node.js
exports.node = function *(that) {
var bar = yield someAsyncThing();
that.body = { bar: bar };
}
然后调用它
var node = require('./utils/node').node;
api.get = function *() {
yield *node(this);
});
答案 1 :(得分:0)
使用yield
可以使用异步函数同步方法
exports.node = function *getData(){
var data = 'xxxxx';
return data;
}
`var node = require('').node;
var data = yield node()`