ホームページ > ウェブフロントエンド > jsチュートリアル > Angular 6 で Promise チェーンを待っているのはコードの匂いですか?

Angular 6 で Promise チェーンを待っているのはコードの匂いですか?

DDD
リリース: 2024-11-20 03:02:02
オリジナル
334 人が閲覧しました

Is Awaiting a Promise Chain in Angular 6 a Code Smell?

Promise チェーンの待機: 落とし穴ですか?

Angular 6 では、開発者は次のコードを使用しないようアドバイスされています:

await someFunction().then(result => {
    console.log(result);
});
ログイン後にコピー

懸念は、Promise チェーンを待つことが無駄であるということではありません。someFunction() が Promise を返す限り、両方のスニペットは同じように機能します。問題は別の場所にあります。

非同期プログラミング スタイルを混在させると混乱が生じます。 ES2017 で導入された非同期関数では、await キーワードが導入されています。 await を非同期関数内で使用すると、関数の実行が一時停止され、Promise が解決されるまで待機します。これにより、非同期プログラミングが簡素化され、コードを読みやすく理解しやすくなります。

一方、Promise Chaining は、非同期プログラミングに対する古いアプローチです。これには、 .then() を使用して複数の Promise を連結することが含まれます。このアプローチはまだ有効ですが、await と組み合わせると混乱する可能性があります。

たとえば、console.log() 呼び出しの場所に別の Promise 呼び出しを追加するか、条件付きで関数から戻りたい場合、意味論が不明確になります。関数の他の場所と同様に、コールバックで await を使用できますか? .then() コールバックから結果を返す必要がありますか?外部関数から戻ることは可能ですか?

これらの複雑さを回避するには、1 つの非同期プログラミング スタイルに固執し、できれば一貫性を保つために await を使用することをお勧めします。そうすることで、コードを簡素化し、バグが混入するリスクを軽減できます。より簡潔でクリーンなバージョンは次のようになります:

const result = await someFunction();
console.log(result);
ログイン後にコピー

以上がAngular 6 で Promise チェーンを待っているのはコードの匂いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート