使用另一个文件中的函数,不需要
Use functions fron another file, without require
上下文:
我有 3 个文件,parent.js
、child1.js
和 child2.js
parent.js
let child1 = require("./child1.js")
let child2 = require("./child2.js")
let key = "*****"
child1.start(key)
child2.start();
child1.js
let key = false;
module.exports = {
action: async() => {
return someApi.get(key);
},
start: async(_key) => {
key = key;
}
}
child2.js
module.exports = {
action: async() => {
let res = await child1.action()
...
},
start: async() => {
// startup actions
}
}
问题
我需要在 child2
中 运行 来自 child1
的函数,但我不能使用 require
,因为 [=19 只能有 1 个实例=]
有谁知道解决这个问题的方法吗?谢谢
我认为你问错了问题:)
如果您需要 child1 是唯一的,您应该使用单调并在需要的任何地方要求它。
//child1
let instance
module.export = () => {
if(!instance) {
instance = {
action: async() => {
return someApi.get(key);
},
start: async(_key) => {
key = key;
}
}
return instance
}
我个人不喜欢单调方法,但它很方便
您可以尝试的另一种方法是将 child1 服务实例注入 child2 'constructor'
你只需要导出一个函数而不是一个对象
parent.js
let child1 = require("./child1.js")()
let child2 = require("./child2.js")(child1)
let key = "*****"
child1.start(key)
child2.start();
child2
module.exports = (child1) => {
const action = async() => {
let res = await child1.action()
...
}
const start = async() => {
// startup actions
}
return {action, start}
}
上下文:
我有 3 个文件,parent.js
、child1.js
和 child2.js
parent.js
let child1 = require("./child1.js")
let child2 = require("./child2.js")
let key = "*****"
child1.start(key)
child2.start();
child1.js
let key = false;
module.exports = {
action: async() => {
return someApi.get(key);
},
start: async(_key) => {
key = key;
}
}
child2.js
module.exports = {
action: async() => {
let res = await child1.action()
...
},
start: async() => {
// startup actions
}
}
问题
我需要在 child2
中 运行 来自 child1
的函数,但我不能使用 require
,因为 [=19 只能有 1 个实例=]
有谁知道解决这个问题的方法吗?谢谢
我认为你问错了问题:)
如果您需要 child1 是唯一的,您应该使用单调并在需要的任何地方要求它。
//child1
let instance
module.export = () => {
if(!instance) {
instance = {
action: async() => {
return someApi.get(key);
},
start: async(_key) => {
key = key;
}
}
return instance
}
我个人不喜欢单调方法,但它很方便
您可以尝试的另一种方法是将 child1 服务实例注入 child2 'constructor'
你只需要导出一个函数而不是一个对象
parent.js
let child1 = require("./child1.js")()
let child2 = require("./child2.js")(child1)
let key = "*****"
child1.start(key)
child2.start();
child2
module.exports = (child1) => {
const action = async() => {
let res = await child1.action()
...
}
const start = async() => {
// startup actions
}
return {action, start}
}