javascript - JQuery Ajax : Random order of dynamic div elements

标签 javascript jquery ajax

我有一个需要在页面上呈现的图像列表。图片来自第三方 API。我得到列表并使用 for 循环显示图像。

var count = imageIds.length;
for (var i = 0; i < count; i++) {
GetImage(imageIds[i]);
}

function GetImage(imageId){
//Ajax request here. Returns string "data" for image.
//Once the request finishes, I update the div's content like:
_targetDiv.append('<img class="thumb" src="data:image/jpeg;base64,' + data + '"/>';
}

问题是图像没有按顺序渲染。上面的代码根据完成的请求以任意顺序排列图像。我需要渲染图片 1,然后是图片 2,然后是图片 3,依此类推...

修复了什么?

最佳答案

创建请求 promise 数组并使用 $.when()按照与原始数据相同的顺序处理响应数据

var imageIds = [1,2,3,4,5];

var promiseArray = imageIds.map(getImage);

$.when.apply(null, promiseArray).then(function(){
   // array of data received for each request, in same order as original data array
   var array = [].slice.call(arguments);

   array.forEach(function(item){
      $('body').append('<p> Item #' + item.id +'</p>')
   })
}).fail(function(){
   // one or more of the requests failed...handle error 
});

function getImage(imageId){ 
   var url ='https://simple-express-cors-endpoint-be970g7kgnc3.runkit.sh';
   // return the request promise
   return $.post(url, {id: imageId}).then(function(data){
       console.log('Request for #'+imageId+' completed');
       // resolve with response data
       return data;
   });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - JQuery Ajax : Random order of dynamic div elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573154/

相关文章:

javascript - Firefox下jQuery ui dialog css问题

javascript - 如何在选择 TR 时向 TR 中的每个 TD 添加类

javascript - 如何在node.js中处理post数据后设置cookie头

javascript - 如果在某些部分应用 css

jquery - 有时会出现"jQuery is not defined"错误

javascript - AJAX 成功后进行旋钮加载

javascript - leaflet js + gMapCatcher 在缩放 -2 时不渲染图 block

javascript - 提取 css 并与数据属性匹配

javascript - 如何获得文字中的金额?

jQuery 验证 : Custom validator with AJAX