0

次のコードは、URL から json データを要求します。そのデータを取得したら、json データの各要素に対して .each 関数を実行します。例として、json からの各値で document.write を実行し、終了後に「終了」を警告するだけに .each 関数を減らしました。

setTimeout を削除すると、コードは正常に機能し、最初にすべての .each コマンドを終了してから、アラートが終了します。ただし、setTimeout を使用すると、すべての .each コマンドを実行する前に終了を警告します。

遅延自体は完全に機能していますが、最初の遅延の後のコードは、すべての .each コマンドが実行されるのを待たずにすぐに実行されます。コードは次のとおりです。

$.ajax({
            type: "GET",
            url: 'url to json data',
            dataType: "json",
            success: function(data) {
            var time = 10;
                $.each(data, function(key, val) {
                setTimeout(function() {
                document.write(val.term);
                   return;
                }, time); time += 10;
                });
            alert('finished');
            },
            error: function () {}
        })

.each コマンドの反復処理中に遅延を維持するにはどうすればよいですか? すべての .each コマンドの反復処理が終了したときにのみ、「終了しました」というアラートが表示されますか?

4

2 に答える 2