javascript の Promise を後で手動で resolve する方法

Published: 2022/7/5


javascript で Promise を扱っていると、特定の条件で手動で後々 resolve させることができるような Promise を生成したくなる場合がある。 手動で new Promise を行えば、その引数コールバックにて resolve を取得することができるが、それを外に持ち出すのはちょっとぎこちない気がしたので、一般的にはどう実装されているのか、気になったのでそれについてのメモ。

こういったニーズはやはり元からあるもので、有名なのは jQuery に昔からあった Deferred というヘルパークラス。 すごく単純な実装としては、上からコードを拝借して、

class Deferred {
  constructor() {
    this.promise = new Promise((resolve, reject)=> {
      this.reject = reject
      this.resolve = resolve
    })
  }
}

としておくと、 deferred.resolve('foo') とすると、 deferred.promiseresolve する。


Tags: javascript

関連記事