私は、フロントエンドを角度で作成しており、Railsでバックエンドを作っています。 Angular側では、多くのHTTPリクエストを送信します。アプリが適切な方法で動作することを確認するために、リクエストが発生することがあります。アングルで順番に非同期呼び出しが行われるようにする
私の研究に基づいて、人々はこの理由で約束をしています。これは本当ですか?前の行動が完全に完了し、応答が戻った後に起こることを約束しますか?
私の例を見てみましょう。
私はアプリケーションオブジェクトを返す約束を持っています。それがlocalStorageに存在しない場合、私のアプリはリモートサーバーからフェッチします。
ApplicationModule.get = function() {
if (!localStorage.application) {
return Restangular.all('session').one('user').get().then(function (response) {
application = {
"id": response.current_application_id,
"user_id": response.id,
"_type": response.current_type
}
localStorage.setItem("application", JSON.stringify(application));
return application
});
} else {
return $q.resolve(JSON.parse(localStorage.application));
}
}
return ApplicationModule;
}]);
私の他のコントローラでは、次のように機能を利用します。私は基本的にApplicationModule.get()
から応答を返す必要があり、それを次の関数somefunction
のパラメータとして使用します。
ApplicationModule.get().then(function (response) {
somefunction(response);
})
私は好奇心が強い、私は約束を使用する場合return Restangular.all('session').one('user').get().then(function (response)
がApplicationModule.getで行われた後、somefunction()
が常に呼び出されるということですか()?
これまでの結果と何か関係がある場合、複数の非同期コンピューティングの目的で約束が使用されていますか?そして私は正しい方法でそれをやっていますか? – JoHksi
はい、あなたは正しいことをやっています。ajaxは非同期であると考えられていますが、約束事は1つの計算にも使えます – niceman