gpt4 book ai didi

javascript - 递归方法在事件中制造问题

转载 作者:行者123 更新时间:2023-11-30 13:01:02 25 4
gpt4 key购买 nike

如果我调用 test(3),我会收到消息 1 的警报。

function test(param) {

var tt = [ "a", "b", "c" ];
for ( var i = 0; i < param; i++) {
if (tt[i] == "b") {
test(1);
alert(i);
}
}
}

但它在成功事件中无法正常工作。如果我调用下面的方法 test(3) 并且请认为它是请求成功的。我收到消息 3 提醒。

function test(param) {

var tt = [ "a", "b", "c" ];
for ( var i = 0; i < param; i++) {
if (tt[i] == "b") {
Ext.Ajax.request( {
url : 'test.do',
method : 'POST',
success : function(response) {
test(1);
alert(i);
}
});
}
}
}

最佳答案

您需要将i 放在异步函数调用周围的闭包中。您可以通过使用 IIFE 来实现这一点,它在 for 循环内创建一个范围,其中 i 的值被保留:

for ( var i = 0; i < param; i++) {
if (tt[i] == "b") {
(function(i){
Ext.Ajax.request( {
url : 'test.do',
method : 'POST',
success : function(response) {
test(1);
alert(i);
}
});
}(i));
}
}

但看起来,您只需要 i 作为警报消息,这可能仅用于调试目的。因此,如果其他一切正常并且您实际上不需要在回调函数(success)中访问 i,那么您也不需要额外的作用域。

关于javascript - 递归方法在事件中制造问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400156/

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