に再開され、非同期機能。JavaScriptを:私は非常に同期している大規模なスクリプトを持って同期
var result = doSomethingSynchronous(myVar);
if (result === 'something') {
doSomethingElse();
}
doSomethingSynchronous機能があるif文で値を返すforループ:
1)は、このような機能を実行します
var i = 0; len = someVariable.length;
for (; i < len; i++) {
if (someVariable[i] === 'aString') {
return true;
} else {
doSomethingElse();
}
}
をのでループし、処理のために激しいことができ、私は配列から一つの要素をシフトした後のsetTimeoutを使用して非同期的に自分自身を実行し、反復キュー処理機能を持つforループを交換しました。それは非同期的に実行したら、もちろんそれは値を返さないと、同期最初のスニペットで「結果」変数に代入して、そこにif文は常に失敗します。私の質問は、この部分を同期させる方法はあるのでしょうか?スクリプトが次の行に進む前に、値を結果に割り当てるか?あるいは、オブザーバー/メディエーター・パターンなどを使用して、非同期関数が完了したことを通知する必要がありますか?
は、代わりに私がコールバックを使用することができますが、実際の実際のコードは、これよりも長く、すべてが同期に依存しています。したがって、var result = doSomethingSynchronous()を非同期に切り替えると、残りの同期スクリプトにドミノの影響が及ぶでしょうか? :-) これは難しく、エラーが発生しやすい変換のように聞こえるので、私は私がアドバイスを求めるだろうと思っていました。
ありがとうございます!
- UDPATEDは "ル" 変数名を修正します。 "len"にする必要があります