gpt4 book ai didi

JavaScript 设计模式 : Injecting a dependency that is not yet created

转载 作者:行者123 更新时间:2023-11-30 18:09:03 25 4
gpt4 key购买 nike

我有一个 CommonJS 模块:

// main-module
module.exports = function () {
var foo,
someModule = require('other-module')(foo);

// A value is given to foo after other-module has been initialised
foo = "bar";
}

如你所见,这需要other-module:

// other-module.js
module.exports = function (foo) {
function example() {
console.log(foo);
// > "bar"
}
}

我希望 other-module 中的 example 函数能够识别 main-module 中的 foo 变量,即使它是在需要模块之后建立的。

other-module 运行时,foo 不会是undefined。然而,关键是当我的 example 函数运行时,foo 将被赋予 bar 的值。

上面的模式显然行不通。我需要实现什么设计模式?

最佳答案

我不是很熟悉 CommonJS,所以这可能不是惯用的方法,但使用函数而不是变量应该可行:

// main-module
module.exports = function () {
var foo,
someModule = require('other-module')(function() { return foo; });

foo = "bar";
}

// other-module.js
module.exports = function (fooFn) {
function example() {
console.log(fooFn());
}
}

关于JavaScript 设计模式 : Injecting a dependency that is not yet created,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com