JavaScript - Promise の非同期操作に関する疑問と、それをよりエレガントに記述する方法
大家讲道理
大家讲道理 2017-07-05 11:04:56
0
3
873
  • ここ数日、「promise」に関する技術的な記事をたくさん読みましたが、目がくらむばかりで、ほんの少しの知識とその機能を大まかに理解しているだけです。

  • まず問題について話しましょう。プロジェクトでは Ajax が最も使用されています。「複数の Ajax 依存関係リクエスト」という非常に不快な問題があります。次のように仮定します: R1 > R2( r1_result ) > R3( r2_result )、
    最も問題のない方法は、すべてを同期することです。結果はひどいものになります。ページがフリーズして読み込みが停止すると、非同期操作を使用する際に不快な点となるのは、コールバックの層が何層にもわたって行われることです。今後さらに増えるでしょう。 . 操作により異なります。

  • 人生は投げ銭なので、最初の段落に戻っていろいろ読んでいると、ある兄弟が約束の原理を分析していました。この兄弟のコードです。http://malcolmyu。 github.io/ma...

リーリー
  • これを読んで、また不思議に思ったのですが、 then( function(){ do... } )、これってコールバックではないでしょうか? ひょっとして、投げる意味は、シュガー構文を使用してください(信じられません)。

  • 存在は合理的です。結局のところ、promise を合理的に使用する方法と、ajax プロセスをよりエレガントに操作する方法はどうすればよいでしょうか?ちなみに( axios\fetch.js )を使ってみていかがでしょうか?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(3)
伊谢尔伦

Promise は、非同期フロー制御を解決するために生まれました。
then メソッドは一見するとコールバックのように見えますが、then の特徴は例外とチェーン書き込みを処理できることです。 ajax リクエストの依存関係は次のとおりです:

A1

-> A2; Ab + Ac
-> 広告; A2 -> Promise を使うとコードがとてもわかりやすくなります
まず A1、A2、Aa、Ab、Ac、Ad、Ax を用意します。これらはすべて依存関係に基づいて Promise オブジェクトを返す関数です。これ以上は書きません。その後、Promise のパフォーマンスをご覧ください: リーリー A1、Aa、および Ac には依存関係がなく、同時に実行され、依存関係の完了に基づいて続行されます。
どの Ajax 問題が発生しても、最後の Err イベントがトリガーされてエラーが均一に処理されます。それを記述するためのコールバック 試してみてください。効率が悪いか、依存関係を判断するためにコールバック メソッドに大量のコードが追加されています。

参照コード:
リーリー

上記のコードはエラーを処理せず、非常に長いので、依存関係がより複雑な場合は、コードの量が想像でき、エラーが発生しやすくなります。

いいねを押す +0
为情所困

あなたの理解は基本的に正しいです。実際、Promiseそれはあまり単純化されておらず、ネストレベルを減らしただけです。

つまり、究極の解決策はAsync/Await、質問者が情報を確認できるということです。

いいねを押す +0
刘奇

エレガンスが次々とコールバッククリスマスツリーの形を整えています。これはPromiseの貢献です。

プログラムを書くときは 7 つまたは 8 つのコールバックをネストする必要がありますが、Promise の方がはるかに優れています。

書くのが面倒だと思うなら使わずにAsync/Awaitを使ってください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート