gpt4 book ai didi

JavaScript 相同的功能,不同的实现取决于运行时

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:08 24 4
gpt4 key购买 nike

在运行时更改 JavaScript 实现的最佳方法是什么?

我有一个通过 SignalR 连接到服务器的 Web 应用程序.
如果在运行时使用 SignalR 连接到服务器有任何问题,我想更改服务功能实现以使用常规 XHR。

我有一个具有以下功能的 js 文件,可通过 SignalR 进行连接:

function initializeConnection() {
// Initialize connection using SignalR
}

function sendEcho() {
// Sending echo message using signalR
}

和另一个具有相同功能的 js 文件,用于通过 XHR 连接:

function initializeConnection() {
// Initialize connection using XHR
}

function sendEcho() {
// Sending echo message using XHR
}

我知道不可能同时加载它们。
我知道我可以在每个函数中使用一个带有切换开关的文件。

我想也许我可以通过在运行时加载和卸载它们来在这些文件之间切换。这可能吗?如果是这样,这是解决此类问题的最佳方法吗?

在运行时提供不同实现的最佳方式是什么?

最佳答案

一种方法是将两个实现定义为具有相同签名的对象,并将命名空间设置为一个变量:

;var MyStuff = {
//SignalR
SignalR: {
initializeConnection: function(){console.log('SignalR.initializeConnection()')},
sendEcho: function(){console.log('SignalR.sendEcho()')}
},

//XHR
XHR: {
initializeConnection: function(){console.log('XHR.initializeConnection()')},
sendEcho: function(){console.log('XHR.sendEcho()')}
}
};

//Do whatever check you want to
var mNamespace = (1 === 2) ? MyStuff.SignalR : MyStuff.XHR;

//Call the instance
mNamespace.initializeConnection();

您还可以将它们拆分为两个文件,然后动态地将它们都添加到 MyStuff 中:

//File 1
;var MyStuff = (MyStuff === undefined) ? {} : MyStuff;
MyStuff.SignalR = {..};

//File 2
;var MyStuff = (MyStuff === undefined) ? {} : MyStuff;
MyStuff.XHR = {..};

关于JavaScript 相同的功能,不同的实现取决于运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719795/

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