我在.js
文件中有这个:
exports.generate = function(details) {
// bunch of code
// returns Promise
}
exports.save = function(details){
exports.generate(details)
.then(function(id){
//save in db
})
}
可以使用像这样的导出函数吗?还是有更好的方法......?
答案 0 :(得分:2)
这取决于您是否希望模块的使用者能够通过覆盖exports.generate
(例如require('foo').generate = function() {...}
)来影响模块的行为。
如果您不希望用户能够以这种方式影响它,那么您最好的选择是取出generate()
函数并命名它,然后导出并使用该函数直接在save()
内的名称:
function generate(details) {
// ...
}
exports.generate = generate;
exports.save = function(details) {
generate(details).then(function(id) {
// ...
});
};
否则,如果你做想要允许用户覆盖generate()
功能,那么你目前正在做的事情很好。
答案 1 :(得分:0)
var _this=this;
exports.save = function(details) {
_this.generate(details) ...
};