javascript - 如何在 JavaScript 中组合函数调用?

标签 javascript

我目前正在开发 WebSocket。为此,我创建了一个 JavaScript 类。在这个类中,我有 2 个方法:subscribe()bind()。第一个方法订阅一个 channel ,下一个方法应该监听它。

但是当我这样调用我的方法时:

let socket = new CustomWebSocket();

socket.subscribe("my-channel").bind("my-event", function (response) {
    console.log(response);
});

我在控制台中收到错误消息:

Uncaught TypeError: socket.subscribe(...).bind is not a function

这就是我在 CustomWebSocket 类中编写函数的方式:

subscribe(channelName) {
    let self = this;

    let subMsg = {
        type: "subscribe",
        channel: channelName
    };

    self.ws.send(JSON.stringify(subMsg));

    return channelName;
}

bind(eventName, callback) {
    let self = this;

    self.ws.onmessage = function (event) {
        let eventData = JSON.parse(event.data);
        if (eventData.type === "channelMessage") {
            callback(eventData.payload);
        }
    }
}

我做错了什么?它以为可以这样工作...

最佳答案

您正在从 subscribe 返回 channelName;。因此,您实际上是在尝试在 channelName 上调用 bind

为了能够在 subscribe 的返回值上调用 bind,您需要返回 selfthis > 来自订阅

关于javascript - 如何在 JavaScript 中组合函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60994721/

相关文章:

javascript - jquery 无法在 PyQt 中工作

javascript - 如何将图像保存到单独的文件夹中

javascript - PWA 应用程序 : Is it possible to turn on torch/flash of the camera from JavaScript

Javascript 计数器 - 如何添加更多值

javascript - ScrollMagic 响应持续时间/粘性导航的端点?

正则表达式 : Match text NOT part of a HTML tag

javascript - JS- appendChild 从一个 div 对象到另一个

javascript - JavaScript 算术问题

javascript - 在第二次单击 jQuery 时删除附加元素

javascript - 如何使用 Lottie 和 Javascript 在动画完成后显示页面