首页 > 解决方案 > 如何检测循环中的最后一个 ajax 调用?

问题描述

我在循环中有一个 ajax 调用,我想检测最后一次在循环中触发 ajax 调用:

for ( var i = 0; i < diff.length ; i++ ) {

   ...some more code...
   var isLastElement = e == diff.length -1;

     $.ajax({
        method:'POST',
        data: {
        },
        url:'somepath',
        success : function (data) {
            if (isLastElement) {
              alert('last item');
            }

        }
      });
 }

没有警报,但控制台中也没有错误。

标签: jqueryajaxloops

解决方案


我假设这里有一个错字,e应该在哪里i......

var isLastElement = e == diff.length -1;

但无论如何,不​​要使用循环索引。如果您使用在循环之外声明的变量,您将为自己节省很多麻烦......并在 ajax 回调中增加此变量的值。

var callCount = 0

for ( var i = 0; i < diff.length ; i++ ) {

     $.ajax({
        method:'POST',
        data: {
        },
        url:'somepath',
        success : function (data) {
        
            if (callCount==diff.length-1) {
              alert('last item');
            }
          
            callCount++
        }
      });
 }

请注意,请求是异步的......并且不保证将按顺序接收响应。所以“最后一个”将是花费最长时间的那个......


推荐阅读