コールバックの仕組みについていくつか問題があります。 私はユーザーの入力を検証する関数を書いています。 関数内で、ユーザー入力に基づいてチェックを実行するために、APIにHTTP GET呼び出しを行う必要があります。コールバックが終了するまで待ってから実行を続行します。
問題は、validate関数がprocess関数から呼び出され、submit関数が、validate()内部で行うHTTP呼び出しの前に呼び出されることです。 他のコンポーネントで使用されている関数なので、プロセス関数を編集できません。
form.process = function(){
// do stuffs
validate();
submit();
}
form.validate = function() {
// lots of checks regarding the model
...
// HTTP GET call
}
validate()内のHTTP GET呼び出しが終了するまでサブミット機能を待機させることはできますか?事前に
感謝:)
'validate'関数は' deferred'または 'promise'を返しますか? – Jag
'process'を編集できない場合は、運が悪いです。 HTTPリクエストは常に非同期なので、HTTPリクエストが返る前に 'submit()'が実行されます。 (まあ、明らかに[あなたはそれらを同期させることができます](http://stackoverflow.com/questions/133310/how-can-i-get-jquery-to-perform-a-synchronous-rather-than-asynchronous-ajax-再)しかし、それはブラウザがハングアップするでしょう。) – Thomas
私は混乱しています...なぜあなたはプロセス機能を編集できませんか?それはvalidate関数を呼び出しているので、たとえ他のコンポーネントがprocess関数を使用していても、まだvalidate関数を呼び出していますが、それがうまくいかない場合、他のコンポーネントが呼び出しても機能しません... – Ted