javascript - 求教关于For循环中执行ajax请求的问题
大家讲道理
大家讲道理 2017-04-11 10:27:17
[JavaScript讨论组]

var result = [];
for(var i = 0 ; i < result.length; i++){

  send(result[i]);
  //如何保证在第一条数据发送成功后再继续循环发送下一条数据呢?(不用jQuery)

}

function send(obj){

 $http({
    method: "POST",
    url: "url",
    data: postdata,
    timeout: 1000
    })
    .success(function(data) {
       
    })
    .error(function(data) {
      
    })
    .finally(function() {
       
    });

}

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
阿神
function send(obj) {
 if (obj > result.length) return false;
 $http({
    method: "POST",
    url: "url",
    data: postdata,
    timeout: 1000
    })
    .success(function(data) {
       obj++;
       send(obj);
    })
    .error(function(data) {
      
    })
    .finally(function() {
       
    });
}
send(0);
var Request = (i) => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
           console.log(i)
           resolve(i+"完成")
        }, 1000)
    })
}
Request(1)
.then((s) => Request(2))
.then((s) => Request(3))
.then((s) => Request(4))
高洛峰

ajax加上参数async: false,改成同步应该就可以了

天蓬老师

ajax是异步的,可以使用递归代替循环
在请求成功的回调函数中递归调用请求函数就行了

黄舟
var result = [1, 2, 3, 4];

httpArray(send, result);

function httpArray(fn, result) {
  var len = result.length;
  exec(fn, len);
  function exec(fn, l) {
    return fn(result[len - l]).then(function () {
      if (l <= 1) return;
      return exec(fn, --l);
    });
  }
}

function send(obj) {
  return $http({
    method: "POST",
    url: "url",
    data: postdata,
    timeout: 1000
  })
    .success(function (data) {

    })
    .error(function (data) {

    })
    .finally(function () {

    });
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号