javascript の Promise を後で手動で resolve する方法
Published: 2022/7/5
javascript で Promise
を扱っていると、特定の条件で手動で後々 resolve
させることができるような Promise
を生成したくなる場合がある。
手動で new Promise
を行えば、その引数コールバックにて resolve
を取得することができるが、それを外に持ち出すのはちょっとぎこちない気がしたので、一般的にはどう実装されているのか、気になったのでそれについてのメモ。
Resolve Javascript Promise outside the Promise constructor scope
I have been using ES6 Promise. Ordinarily, a Promise is constructed and used like this new Promise(function(resolve, reject){ if (someCondition){ resolve(); } else { rejec...
stackoverflow.com

こういったニーズはやはり元からあるもので、有名なのは jQuery に昔からあった Deferred
というヘルパークラス。
すごく単純な実装としては、上からコードを拝借して、
class Deferred {
constructor() {
this.promise = new Promise((resolve, reject)=> {
this.reject = reject
this.resolve = resolve
})
}
}
としておくと、 deferred.resolve('foo')
とすると、 deferred.promise
が resolve
する。
Tags: javascript
関連記事
Promise 同時実行制御のための async-pool
2023/9/30
Promise を扱っている時に microQueue が積まれるタイミング
2022/10/10
Node.js でコマンドの実行結果を1行ずつ取得する方法
2022/10/9
(async) 非同期関数と非同期ジェネレータまとめ
2022/6/30