在js的回调函数中执行websocket订阅,发现回调的函数变了

在js的回调函数中执行websocket订阅,发现回调的函数变了

    test()

test(){

this.subscribe('/topic/event', function (res){

//todo(function ()

console.log(111)

})

this.subscribe('/topic/screen', function (res){

//todo

console.log(222)

})

}

subscribe(topic,callback){

try {

// setTimeout(() => {

// console.log("123")

// callback(123)

// },2500)

this.stompClient.subscribe(topic, (msg) => { // 订阅服务端提供的某个topic

let topic1 = topic

console.log('接收广播消息:' + topic1 + ':' + msg.body) // msg.body存放的是服务端发送给我们的信息

callback(msg.body)

},this.headers);

} catch (err) {

console.log("websocket断线了: " + err);

}

},

在实际执行test时,在一个函数同时对subcribe进行调用,理想的情况是不同的topic执行不同的callback,this.subscribe('/topic/event'这一个websocket的订阅,其理想的回调是执行console.log(111),但实际上最后回调执行的是function (res){console.log(222)})。
网上找了一圈,也没找到解决方案。

    subscribe(topic,callback){

try {

setTimeout(() => {

console.log("123")

callback()

},2500)

//this.stompClient.subscribe(topic, (msg) => { // 订阅服务端提供的某个topic

//let topic1 = topic

// console.log('接收广播消息:' + topic1 + ':' + msg.body) // msg.body存放的是服务端发送给我们的信息

// callback(msg.body)

//},this.headers);

} catch (err) {

console.log("websocket断线了: " + err);

}

},

最气人的是如果我代码里面的是setTimeout,这时启动test()函数时,控制台就能按顺序打印123、111、123、222了

以上是 在js的回调函数中执行websocket订阅,发现回调的函数变了 的全部内容, 来源链接: utcz.com/p/936136.html

回到顶部