我正在使用最新版本的 signalR,我想改进 on
方法:
var connection = new signalR.HubConnection('/chat');
connection.on('greeting', msg => $log(msg));
connection.on('sayhello', msg => $log(msg));
我的目标是这样的:
connection
.on('greeting', msg => $log(msg))
.on('sayhello', msg => $log(msg));
我该怎么做?谢谢!
最佳答案
如果您使用的包不允许链接(意味着它不会在 on
方法中返回实例),那么您可以创建一个包装器来实现您想要的。
class MyConnection {
connection;
constructor(connection) {
this.connection = connection;
}
on(key, callback) {
this.connection.on(key, callback);
return this;
}
}
现在像这样申请:
var myConnection = new MyConnection(connection);
myConnection.on('greeting', msg => $log(msg))
.on('sayhello', msg => $log(msg));
这种方法通常用于企业软件(至少在服务器端),因为它允许您做一些事情:
- 扩展第三方包以添加您的域特定逻辑
- 以一种更容易用你的系统进行测试的方式包装它
- 仅在您不希望人们使用所有第三方包的情况下公开您希望开发人员使用的功能
关于javascript - 如何在 signalR 中实现 "on"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49533857/