我尝试将10张图片附加到我的#container
中,其顺序与他们要求的相同,但由于我不理解他们被退回的原因无序。
我目前通过for
循环获取网址并将其传递到AJAX请求中,如下所示:
for (i = 0; i < $links.length; i++) {
link = $links.eq(i).attr('href');
// Appends anchor into #container
$('#container').append('<a href="' + link + '" class="tile"><p>' + $links.eq(i).text() + '</p></a>');
$.ajax({
type: 'GET',
url: link
}).done(function (data) {
var $data = $(data);
$('#container').append($data.find('img').eq(0));
});
};
任何有关我如何修复或更好的见解都会很棒!谢谢!
答案 0 :(得分:4)
这是预期的行为,因为请求是异步的。它们可能按您需要的顺序触发,但响应时间完全取决于服务器以及处理每个请求所需的时间。
例如,假设您提出3个请求。 #1需要150ms完成,#2 200ms和#3 75ms。然后,您的done()
处理程序将按顺序执行3,1,2。
如果您依赖于按特定顺序处理的响应,则需要修改代码以在单个请求中发送所有数据,以便可以根据需要格式化响应。
async: false
的使用可能会产生您期望的行为,但使用它的做法非常糟糕,上述解决方案将更为可取。