JavaScript具有相同的功能,不同的实现取决于runtme

雅各布

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

我有一个Web应用程序,该应用程序通过SignalR连接到服务器
如果在运行时使用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 = {..};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel相同的视图具有不同的选项,具体取决于到达那里的方式

Gulp任务具有不同的来源,具体取决于参数

具有相同功能的不同按钮

Matlab中具有不同数组大小的数组操作:不同的行为取决于Matlab版本?

取决于具有汇总的项目

具有定制评分器的Scikit学习分类器(取决于培训功能)

同一文件具有不同的内容,具体取决于打开文件的方法

Dockerized Vue SPA 具有不同的 API url,具体取决于它运行的位置

旋转器具有不同的动态文本颜色,具体取决于值

交叉表/数据透视查询具有不同的列数(取决于字段)

具有不同签名的C ++调用函数,具体取决于类型

显示和值取决于具有不同值的下拉菜单的选项

具有相同输入的相同功能返回不同的值

Pimpl习惯用法的实现取决于模板功能

具有相同静态功能和不同功能的更多类

名称相同但内容不同的NFS文件(取决于主机)

角度相同的路线,但布局不同,取决于登录状态

使用流取决于键的键值对提供不同的功能

模板功能的不同结果取决于引用类型

设计模式; 具有不同方法的类,它们的行为可能不同,这取决于多个方面

如何实现具有参数相同,但不同签名的方法

Typescript实现具有相同键但类型不同的接口

不同的程序实现可以具有相同的程序语义吗?

如何实现对相同函数但具有不同参数的线程?

excel Vlookup是否还有其他功能,取决于引用的单元格值,列索引不同?

具有相同名称,不同来源的功能

为什么这些具有相同功能的方法写的不同?

为什么Prelude具有相同的功能,只是参数不同?

接近相同功能的Arduino,具有非常不同的输出