私の使用例:
これより良いデザインパターンはあるでしょうか?
いくつかのコメントを読んだ後、コードを大幅に簡略化しました:
値またはその Promise を明示的に返す関数を作成できます。とにかく簡単に await を実行できます。結果が同期しているかどうかを確認するには、resultinstanceofPromise
await
resultinstanceofPromise
type Awaitable = T | Promise 関数 mightyimmediate( 呼び出し: () => 待機可能, tryImmediate: ブール値、 ): 待機可能 { if (tryImmediate) { 試す { return call(); // 実際には T なのか Promise なのかはわかりません } キャッチ (エラー) { // 必要なものを選択してください if (Math.random() > 0.5) { エラーをスローします。 } それ以外 { Promise.reject(err) を返す } } } それ以外 { // それが約束であることを確認してください return Promise.resolve().then(() => call()) } }; キャッシュさせます: Record = {}; function getCached(url: string): Awaitable { if (キャッシュ[url]) キャッシュ[url]を返します。 新しい Promise を返します (r => { setTimeout(() => r('url の結果), 1000) }).then(v => { キャッシュ[url] = v; return v }) }
値またはその Promise を明示的に返す関数を作成できます。とにかく簡単に
を使用します。await
を実行できます。結果が同期しているかどうかを確認するには、resultinstanceofPromise