gpt4 book ai didi

Javascript 绑定(bind)和这个

转载 作者:行者123 更新时间:2023-11-30 18:08:23 25 4
gpt4 key购买 nike

我正在为 Websocket 连接构建时间测量。我需要将开放范围绑定(bind)到服务器对象。但我也有 time1,它是从开始到结束连接的时间。我想将 time1 放入对象,这工作正常,但我在绑定(bind)函数中没有任何访问权限。

for(var i = 0; i < 10; i++) {
Server[i] = new WebSocket('ws://127.0.0.1:9300');
var time1 = new Date;
Server[i].time1 = time1;

Server[i].bind('open', function() {
var time2 = new Date;
/*** doesn't work ***/
console.log(time2 - this.time1);
/*** doesn't work ***/
console.log(time2 - Server[i].time1)
/*** ***/
});
}

这两种方式我都试过了,都不行。我知道绑定(bind)中的 this 是不同的,但有人能告诉我一种方法来确保每次 1 到每个 server[i] 对象然后在这个绑定(bind)方法中访问它吗?

谢谢!

更新 *

您能告诉我如何更改此功能以使其正常工作吗

this.conn.onopen = function(){dispatch('open',null)}

var dispatch = function(event_name, message){
var chain = callbacks[event_name];
if(typeof chain == 'undefined') return; // no callbacks for this event
for(var i = 0; i < chain.length; i++){
chain[i]( message )
}
}

最佳答案

您必须像这样关闭 i 的值:

Server[i].bind('open', function(i) {
return function() {
var time2 = new Date;
console.log(time2 - Server[i].time1)
}
}(i));

否则你所有的函数都会引用同一个变量。

关于Javascript 绑定(bind)和这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15243894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com