Javascript 循环外部回调、循环内部闭包和'';同步'';事件

Javascript 循环外部回调、循环内部闭包和'';同步'';事件,javascript,Javascript,嗨,我有一个同步调用的回调(即我知道顺序),只需等待调用callbcak即可 .someCallback(function () { var abc = ['a', 'b', 'c']; for (var i = 0; i < 3; i++) { //closure var outer = function (ii) { alert(ii); var inner = functi

嗨,我有一个同步调用的回调(即我知道顺序),只需等待调用callbcak即可

.someCallback(function () {
    var abc = ['a', 'b', 'c'];
    for (var i = 0; i < 3; i++) {
        //closure
        var outer = function (ii) {
                alert(ii);
                var inner = function (ii) {
                    return abc[ii];
                }
                return inner(ii);
            } //closure
        return outer(i);
    }); //close loop
});
.someCallback(函数(){
var abc=['a','b','c'];
对于(变量i=0;i<3;i++){
//关闭
var外部=功能(二){
警报(二);
var内部=功能(ii){
返回abc[ii];
}
返回内部(ii);
}//闭包
返回外部(i);
});//闭环
});
我没有使用任何框架,只是使用raw.js;我无法访问此回调之外的代码

问题是当
返回外部(i)
时,要么丢失内部变量;无法通过i=0,或仅调用外部(i)


这是如何做到的。

这里,不是很干净,但很有效:

var i = 0
.someCallback(function() {
     var abc = ['a','b','c']
     //closure
     var outer = function(ii){
         alert(ii)  
         var inner = function(ii){
              return abc[ii];
            } 
     return inner(ii);
     }//closure
     i += 1
     return outer(i-1)
});//close function and call

希望这能有所帮助

这将不可避免地导致三个不同的函数对象,它们有三个不同的返回值,您想要哪一个?每次调用someCallBack时,我想要下一个值:a、b、CY您必须使用一个全局变量。这不是很推荐。但是,你不应该在循环中调用回调函数吗?那会简化事情不,那不是一个选项。。。(不幸的是)这就是挑战。。。或者这不可能有一个动态循环或以某种方式保持循环的索引。someCallBack被按键调用。每次按下一个键,我都需要返回下一个值。第一个事件返回a,下一个事件返回b,最后一个事件返回c。。。这是可能的吗?好了,使用globals。我必须检查我是否可以在回调后放置var i=0,但我稍后会检查,如果是这样,我认为这是可行的!半正派代码缩进怎么了?您的解决方案不太清晰,并且由于代码缩进错误而具有欺骗性。还有,OP问题中的
for
循环到哪里去了?我不知道你的代码是如何执行3次的,就像上面指出的OP一样。我还没有检查过,但是每次我单击/callback调用时,var
I
都会增加。。这不是异步的,我知道它将被执行3次;这就是为什么我把它标为答案。。