问题描述
我在 node 中使用了一个带有几个函数的 js 文件,效果很好。但是其中一个函数需要触发我主js文件中的一个函数,我不知道如何解决这个问题。
所以我有我的 main.js
const externalObject = require('objectJS');
let myfunctions = require('./stuff/myFunctions.js');
myFunctions.doSomething();
和 myFunctions.js
module.exports = {
doSomething: function() {
doSomethingElse();
return data;
}
}
function doSomethingElse() {
//do some stuff
if (a) {
return something;
} else {
externalObject.action()
//or
//inform main.js to do something with externalObject
}
}
我的问题是我不知道如何访问 myFunctions.js 中的外部对象(我不能在那里要求它),或者如何通知我的 main.js 这个对象需要更新。
对此有什么建议吗?
解决方法
将函数 externalObject.action
本身作为参数传递给 doSomethingElse
。
const externalObject = require('objectJS');
let myfunctions = require('./stuff/myFunctions.js');
myFunctions.doSomething(externalObject.action);
模块需要相应地处理 callback
参数:
module.exports = {
doSomething: function(callback) {
doSomethingElse(callback);
return data;
}
}
function doSomethingElse(callback) {
//do some stuff
if (a) {
return something;
} else {
callback()
//or
//inform main.js to do something with externalObject
}
}
通过这样做,externalObject.action
会从模块内部调用,您可以根据需要从 externalObject
内部更新 externalObject.action
。