ホームページ >ウェブフロントエンド >jsチュートリアル >AngularJS Promises でコールバックを使用する必要がありますか?

AngularJS Promises でコールバックを使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-09 20:22:02851ブラウズ

Should You Use Callbacks with AngularJS Promises?

AngularJS のコールバック反転: アンチパターン

AngularJS では、Promise を返すサービスにコールバック関数を渡すのが一般的です。ただし、このアプローチはアンチパターンを導入し、Promise の利点を妨げる可能性があります。

アンチパターンの例:

getTokens サービスが受け入れる次のコードを考えてみましょう。コールバック関数:

...
getTokens: function(callbackFn) {
  $http.get('/api/tokens').then (function onFulfilled(response) {
    callbackFn(response.data);
  });
}
...

このアプローチにはいくつかの欠点があります:

  • 制御の反転: コールバック関数はサービスのコンテキスト内で実行され、制御フローが反転します。
  • 壊れた Promise Chaining:コールバックにより、複数のイベントを処理したり、データを順番に操作するために Promise が連鎖されるのを防ぎます。
  • 複雑さ: コールバックの明示的な処理により、コードベースに不必要な複雑さが追加されます。

ベスト プラクティスのためのリファクタリング:

このアンチパターンを解決するには、次のようにコードをリファクタリングします:

...
getTokens: function() {
  return $http.get('/api/tokens');
}
...

呼び出しモジュールで、返された Promise を使用して結果を処理します:

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });

ベスト プラクティスの利点:

このベスト プラクティスを採用すると、いくつかの利点が得られます。

  • Promise チェーンの維持: Promise をチェーンして複数の操作を順次実行できるようになり、コードの可読性と保守性が向上します。
  • コードの簡略化: コールバックの明示的な処理を削除すると、コードベースが簡素化され、潜在的なエラーが排除されます。
  • テスト容易性の向上: テスト用のクリーンなインターフェイスを提供することを約束します。非同期操作により、コードの動作の検証が容易になります。

以上がAngularJS Promises でコールバックを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。