如何使用for循环语句通过Ajax发送大数据数组

how to sending big data array using for loop statement via Ajax

本文关键字:数据 数组 Ajax for 何使用 循环 语句      更新时间:2023-09-26

我正在学习javascript编程。

我的js代码有效。但有一个问题是,下面的代码简化为要求几乎同时向服务器发送大数据。我想一个接一个地发送数据。如何使用闭包修复它?:-)

$("#dataupload").click(function(){
    for (var i = 0 ; i < datafiles.length; i++) { 
        var f = datafiles[i] ;
        $.post("/upload.php",f,function(result){
            console.log(result);
        });
    }
});

如果你想连续地做,你可以做这样的事情:

(function send(i) {
    if(i < datafiles.length) {
        $.post("/upload.php", datafiles[i], function(result) {
            console.log(result);
            send(++i);   
        });
    }
})(0);

这里send是一个函数,它是立即调用的函数表达式的一部分。我们正在使用回调复制一个循环。尽管我们在这里调用send,但需要注意的是,这并不是严格递归的,因为对send的后续调用是在send本身执行时完成的,而是在执行$.post的回调时调用的。

send有一个参数,它是datafiles数组的索引。如果i小于数组的长度,则表示我们仍有文件要发送。我们调用$.post,在回调中,我们增加i的值,并用i的新值再次调用send。当i等于datafiles数组的长度时,意味着我们完成了。