我正在尝试用JS编写应用程序。它将通过对其他站点的许多ajax调用将数据存储在一个对象中。
所以,我打电话,接收一些数据并把它放在一个变量中。然后我使用previus数据进行其他调用。将根据previus数据进行多次调用。
我为每个调用做了一些函数并尝试逐个执行它们,但是我看到当执行下一个函数时,前一个函数可能还没有完成并且数据不可用。
我知道有回调函数,但我无法通过回调函数调用每个下一个函数,因为我需要根据数据运行或不运行其中一些函数。
请帮帮我,告诉我如何整理我的应用或告诉我在哪里阅读它。我甚至不知道写什么给谷歌找我需要的东西。
答案 0 :(得分: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);
您需要重复此过程,直到完成所有请求。