0

これは、最初にファイルリストを取得する関数です。各ファイルに対して、 ajax 関数を呼び出して何かを実行します。

    function getImagesList(folder) {
        $.ajax({
            type:"POST",
            url: "getImgList.php",
            data: {"data":folder},
            dataType: "json",
            success: function (data) {
                var IsfirstLoggingItem = "true";
                for (var key in data) {
                    //alert (data[key]);
                    pdfToImgExec (data[key],IsfirstLoggingItem,folder,1);
                    $('#pdfToImgResult').append('<p>Processing ' + data[key] + ' <img src="loading.gif" height="20" width="20"/></p>');
                    IsfirstLoggingItem = "false";
                }
                folder == 'Incoming' ? getImagesList('result') : pdfToImgResult();
            },
            error: function(x, t, m) {
                $('#pdfToImgResult').html('<p>Error</p>');
                alert (t);
                releaseBtn();
            }
        }); 
    }

これは呼び出し先関数で、何かを実行するための ajax 関数が含まれています

    function pdfToImgExec(file,IsfirstLogging,folder,round){
            var postString = file + '&' + IsfirstLogging + '&' + folder;
            $.ajax({
                type: "POST",
                url: "pdfToImgExec.php",
                data: {"data":postString},
                dataType: "html",
                success: function (data) {
                    if (data) {
                        $('#pdfToImgResult').html('').append('<p>Finish processing ' + file + '</p>');
                    } else if (!data && round < 4) {
                        $('#pdfToImgResult').html('').append('<p>Encounter error in processing ' + file + '  , retrying ' + round + ' round </p>');
                        round++;
                        pdfToImgExec(file,IsfirstLogging,folder,round);
                    }
                },
                error: function(x, t, m) {
                    $('#pdfToImgResult').html('errpr');
                    alert (t);
                    releaseBtn();
                }
            }); 
    }

つまり、getImagesList 関数はファイル リストを取得し、ファイルごとに pdfToImgExec 関数を呼び出して ajax スタッフを実行します。問題は、ajax スタッフが終了するのを待たずに、次のループを開始することです。

つまり、たとえば file1 を実行する ajax スタッフ => file1 を終了する ajax スタッフ => file2 を実行する ajax スタッフ => file2 終了 => 結果を確認したい

ただ、現状は file1 running ajax staff => file2 running ajax staff => チェック結果 => file1 終了 / file2 終了

両方の関数で async:false、cache :false を試しましたが、解決しないようです。どうすれば修正できますか? ありがとう

4

1 に答える 1