jQuery each(),在内部ajax comepletes之后逐个处理

Uda*_*ale 1 javascript ajax jquery

我有这个代码

$("[input]").each(function(){
  var data = $(this).val();
  $.post('someurl.php',{data:data},function(result){
    alert(result);
  });
});
Run Code Online (Sandbox Code Playgroud)

现在,当我打开我的网络选项卡时,发布ajax请求似乎是同时启动的,但我想逐个实现.这意味着当一个ajax请求完成时,我希望each()等待再次循环.

我怎样才能做到这一点?

Aru*_*hny 7

这是因为ajax的异步性质,你可以尝试的是类似的东西

process($("[input]"));

function process($inputs) {
    if (!$inputs.length) {
        return;
    }

    var $input = $inputs.eq(0);
    var data = $input.val();

    $.post('someurl.php', {
        data: data
    }, function (result) {
        console.log(result);
    }).always(function () {
        process($inputs.slice(1))
    });
}
Run Code Online (Sandbox Code Playgroud)

演示:小提琴