P粉6183582602023-08-22 16:14:21
今日、Promise
を Node.js
の通常の Javascript メソッドとして使用できるようになりました。
シンプルで基本的な Promise
の例 (KISS メソッドを使用):
通常Javascript非同期APIコード:
リーリー約束
Javascript 非同期 API コード:
(この優れた情報源 にアクセスすることをお勧めします)
さらに、Promise を
ES7 の
async\await とともに使用して、プログラム フローを
fulfilled まで待機させることもできます。結果は次のようになります:
リーリー
.then() メソッドを使用できます。
リーリー
は、react-native
などの Node.js ベースのプラットフォームでも使用できます。
: ハイブリッドアプローチ
(コールバック メソッドには 2 つのパラメータ、つまり error と result があると仮定します)
リーリー
上記のメソッドは、古いスタイルのコールバックと Promise の使用の結果に同時に応答できます。
P粉6800875502023-08-22 11:07:09
Promise には状態があり、最初は保留状態であり、次のように解決できます。
プロミス を返す関数は、例外 をスローせず、拒否を返す必要があります。 Promise を返す関数から例外をスローすると、} catch {
と .catch
の両方を使用する必要があります。 Promise ベースの API を使用している人は、Promise が例外をスローすることを望んでいません。 JS の非同期 API がどのように機能するかわからない場合は、まず この回答を確認してください。
したがって、Promise を作成するということは、通常、Promise がいつ解決されるかを指定することを意味します。つまり、データが利用可能である (および .then
を使用してアクセスできる) ことを示すために、いつ Fulfilled または Rejected ステージに移行するかを指定することになります。
Promise
コンストラクター (ネイティブ ES6 Promise など) をサポートする最新の Promise 実装を使用します:
その後、生成された Promise を次のように使用できます:
リーリー遅延をサポートするライブラリを使用します (ここでは例として $q を使用しますが、後で jQuery も使用します):
リーリーまたは、jQuery に似た API を使用して、発生するイベントをフックします:
リーリーJS ではコールバックが一般的であるため、これらの API は非常に一般的です。一般的なケースの onSuccess
と onFail
を見てみましょう。
リーリー
Promise コンストラクター (ネイティブ ES6 Promise など) をサポートする最新の Promise 実装を使用します:
リーリー
リーリー
jQuery は$.Deferred(fn) フォームも提供します。これには、次のように
new Promise(fn) フォームに非常に近い式を記述できるという利点があります。下に示された :###
リーリー
注: ここでは、jQuery の遅延
メソッドと reject
メソッドが「分離可能」である、つまり、jQuery.Deferred() のメソッドにバインドされているという事実を利用します。 ### 例###。すべてのライブラリがこの機能を提供するわけではありません。
3. ノード スタイル コールバック (「nodeback」):
Node スタイルのコールバック (ノードバック) には特定の形式があり、コールバックは常に最後のパラメーターであり、その最初のパラメーターはエラーです。まず手動で Promise に変換します:
):
リーリー一般に、手動でものを Promise に変換しすぎないでください。Node 用に設計されたほとんどの Promise ライブラリと Node 8 のネイティブ Promise には、ノードバックを Promise に変換するためのメソッドが組み込まれています。例えば### リーリー
4. ライブラリ全体でノード スタイルのコールバックが使用されます: Nodeで
Native Promise.then
ハンドラー内では、物事を Promise に変換する必要はありません。 .then
ハンドラーから Promise を返すと、Promise の値を使用して解決または拒否されます。また、プロミスを拒否する .then
ハンドラーから例外をスローすることもお勧めします。これは、プロミススローの安全性として知られています。 onload
の場合は、onX
の代わりに addEventListener
を使用する必要があります。