私は JS にワークフローを持っています。これは、setTimeout 関数によって設定されたいくつかのセットを 1 つずつ実行する必要があります。できれば簡単で美しい方法で、これを JS/jQuery でどのように行うことができますか?
このように見えます
function recursiveOne(arg1){
if (allRight) return;
doSomething();
andAnotherOne();
setTimeout(function(){recursiveOne(arg1)}, 3000);
}
function coreFunction(){
recursiveOne(arg1);
recursiveTwo(arg2);
recursiveThree(arg3);
}
ここで、recursiveTwo は、recursiveOne がすでに最後の反復を行っている場合にのみ開始する必要があります。
悪い点は、バックエンドからの反応を待つ必要があり、それを直接受け取ることができなかったため、すべての関数が setTimeout を介して機能することです。HTML ソースによってのみです。
私が見ることができる可能な解決策:
- 次の関数のコールバックは、前の関数で正しく渡されました。クールすぎない。
- jQuery defered オブジェクト。これもそれほど美しくはありませんが、少しだけ優れています。欠点は、この方法で使用したい各関数で追加の遅延リクエストを発生させる必要があることです。