在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了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论