gpt4 book ai didi

javascript - 获取api回调参数

转载 作者:搜寻专家 更新时间:2023-11-01 00:46:01 25 4
gpt4 key购买 nike

这是我得到的

var mods = this.registry.gmmods;
for (var i = 0; i < mods.length; i++) {
if(mods[i] != this.config.botid){
this.api.stalk(mods[i],true,function (data){
console.log(mods[i]);
});
}
}

只有控制台日志输出未定义,我似乎可以弄清楚如何在回调函数中获取该数据,因为回调数据不包含它

谁能告诉我我该怎么做

最佳答案

这是你闭包中 i 的问题,当调用 this.api.stalk 的回调时,很可能 i 是 mods.length。请参阅以下示例:

var i = 0;
var arr=["hi","there"];
for(i=0;i<arr.length;i++){
setTimeout(function(){
console.log(arr[i]); //undefined
console.log("and i is:"+i); //i will be 2
},100);
}

这里是解决闭包问题的方法:

var i = 0;
var arr=["hi","there"];
for(i=0;i<arr.length;i++){
setTimeout(
(function(index){
return function(){
console.log("Index is:"+index);//0 and 1
console.log("arr at index:"+arr[index]);//hi and there
console.log("i is:"+i);//2 and 2
console.log("arr at i:"+arr[i]);//undefined and undefined
}
})(i)
,100);
}

您的代码可能类似于:

var mods = this.registry.gmmods;
for (var i = 0; i < mods.length; i++) {
if(mods[i] != this.config.botid){
this.api.stalk(mods[i],true,
(function(index){
return function (data){
console.log("index is:"+index);
console.log(mods[index]);
console.log("i is:"+i);
console.log(mods[i]);
}
})(i)
);
}
}

关于javascript - 获取api回调参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577509/

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