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() {
});
}
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 () {
});
}
ajax加上参数async: false
,改成同步应该就可以了
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))