检查何时使用所需文件中的函数
checking when a function in required file is used
我在节点中使用了一个带有几个函数的 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.action
中更新 externalObject
。
仅供可能使用它的其他人使用:经过大量尝试使用 eventemitter
也是一个解决方案:
myFunctions.js
let EventEmitter = require('events').EventEmitter
const myEmitter = new EventEmitter();
module.exports = {
myEmitter,
doSomething: function() {
doSomethingElse();
return data;
}
}
function doSomethingElse() {
//do some stuff
if (a) {
return something;
} else {
myEmitter.emit('action');
}
}
并在 main.js
const externalObject = require('objectJS');
let myfunctions = require('./stuff/myFunctions.js');
myfunctions.myEmitter.on('action', function() {
externalObject.Action();
})
很有魅力。
我在节点中使用了一个带有几个函数的 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.action
中更新 externalObject
。
仅供可能使用它的其他人使用:经过大量尝试使用 eventemitter
也是一个解决方案:
myFunctions.js
let EventEmitter = require('events').EventEmitter
const myEmitter = new EventEmitter();
module.exports = {
myEmitter,
doSomething: function() {
doSomethingElse();
return data;
}
}
function doSomethingElse() {
//do some stuff
if (a) {
return something;
} else {
myEmitter.emit('action');
}
}
并在 main.js
const externalObject = require('objectJS');
let myfunctions = require('./stuff/myFunctions.js');
myfunctions.myEmitter.on('action', function() {
externalObject.Action();
})
很有魅力。