1

我使用下面的代码等待,然后执行下一个循环:

function loop()
{
    setTimeout(function()
    {
        process_number(a[i]);
        i++;
        if (i < a.length)
            loop();
        else
        {
            alert("done!");
        }
    }, 5000);
}

我想更改为在 get complete 时执行的 jQuery $.get 回调函数。

$.get("test.cgi", { name: "John", time: "2pm" },
  function(data){
  alert("Data Loaded: " + data);
});

function loop()
{
    //where process_number executed complete, do next loop
    //process_number(a[i]);
    i++;
    if (i < a.length)
        loop();
    else
    {
        alert("done!");
    }
}

函数 process_number 执行时间不确定。

4

2 回答 2

1

您可以向 loop() 函数添加回调参数并在需要时执行它:

function loop(callback)
{
    //where process_number executed complete, do next loop
    //process_number(a[i]);

    if (callback) {
        callback();
    }
}

loop(function () {
    alert("continuing...");
});
于 2012-04-17T15:51:52.980 回答
1

基本上,您可以将函数名称作为参数传递,然后通过参数名称调用它,这与匿名函数一样有效:

function foo(x,callback)
{
    callback(x);
}

foo("hello",alert)
foo("hello",function(x){alert(x);});
于 2012-04-17T15:53:45.710 回答