2

我正在尝试用 JS 编写一个应用程序。它将通过对其他站点的许多 ajax 调用将数据存储在一个对象中。

因此,我拨打电话,接收一些数据并将其放入变量中。然后我使用以前的数据进行其他调用。会有很多基于以前数据的调用。

我为每次调用都做了一些函数并尝试一个一个地执行它们,但是我看到当执行下一个函数时,前一个函数可能还没有完成并且数据不可用。

我知道有回调函数,但我不能让每一个下一个函数都被前一个函数的回调调用,因为我需要根据数据运行或不运行其中的一些函数。

请帮助我,告诉我如何组织我的应用程序或告诉我在哪里阅读它。我什至不知道写什么给谷歌来找到我需要的东西。

4

1 回答 1

0

您正在发出 ajax 请求,但 ajax 请求不是同步的,那么您需要在函数中使用回调来控制函数何时完成。

您可以使用一些封装它的 jquery 函数,以便您可以做出任何努力来获得相同的行为。

您需要创建一个不依赖于任何数据或其他函数的函数数组:

    var deferreds = [];

    $.each(views, function(index, view) {
        deferreds.push($.get('url_that_you_want_to_call', function(data) {
                // treat your data as you wish
        }));
    });

然后你可以传递这个数组来执行,你可以控制它们何时完成:

    $.when.apply(null, deferreds).done(callback);

您需要重复此过程,直到完成所有请求。

这个答案很有帮助

于 2013-09-27T14:33:06.643 回答