for循环里按顺序执行多个异步操作
我最近在for循环中使用多个异步操作的时候会出现数字不正常增加的问题,而且异步操作不是按顺序执行的,这里列出解决的方法,方便初学Promise的人。
使用Promise实现顺序执行多个异步操作
var CheckedItmArr=["图片1","图片2","图片3"];
var Prolength=CheckedItmArr.length;
function SaveAllData(){
if(Prolength>0){
for(var i=0;i<Prolength;i++){
ContrastAllRuleToItem(CheckedItmArr, i)
}
}
}
function ContrastAllRuleToItem(array,index){
return new Promise(function (resolve, reject) {
$.get(
url
,{
input1:array[i].input1,
input2:array[i].input2,
input3:array[i].input3,
}
,function(data,textStatus){
/*
要做的操作例如打印
console.dir(data);
*/
resolve();
}else{
$.messager.alert('系统错误','系统异常,请稍后重试');
}
},'json');
})
}
SaveAllData()
递归调用实现按顺序调用多个异步操作
var CheckedItmArr=["图片1","图片2","图片3"];
function ContrastAllRuleToItem(index, array) {
if (index < array.length) {
$.get(
url
,{
input1:array[i].input1,
input2:array[i].input2,
input3:array[i].input3,
}
,function(data,textStatus){
console.dir(data);
ContrastAllRuleToItem(index + 1, array);
},'json');
}
}
ContrastAllRuleToItem(0, CheckedItmArr);