我对节点js执行函数有疑问。代码示例
const dynamic = require('dynamic'),
obj1 = dynamic.obj1,
ovj2 = dynamic.obj2;
const myFunction1 = () => {
let x = obj1
};
const myFunction2 = () => {
let x = obj2
};
module.exports.myFunction1 = myFunction1;
module.exports.myFunction2 = myFunction2;
问题是如何设计此代码以便每次调用myFunctions时都能从动态变量中获取更新值。因为require只在模块的开头工作一次。动态是静态的,如何为它做出解决方案?
答案 0 :(得分:1)
如果您是dynamic
模块的所有者,您可以将其更改为从该模块导出函数而不是对象,这要归功于require方法的这种缓存机制不会成为问题。然后,您可以在模块中的每个位置调用此模块中的函数,并且可以重新更新值
// dynamic.js
module.exports = () => {
return {
obj1,
obj2
};
};
//and in another module
const dynamic = require('dynamic'),
// then in code you can do this
obj1 = dynamic().obj1,
ovj2 = dynamic().obj2;
答案 1 :(得分:1)
这应该按照您的预期运作:
const dynamic = require('dynamic');
const myFunction1 = () => {
const x = dynamic.obj1;
};
const myFunction2 = () => {
const x = dynamic.obj2;
};
module.exports.myFunction1 = myFunction1;
module.exports.myFunction2 = myFunction2;