Promiseを外側からresolveする
jsでpromiseを作って、それの制御を外側からする
code:js
const createResolver = () => {
let res
let rej
const prom = new Promise((resolve, reject) => {
res = resolve
rej = reject
})
return { prom, res, rej }
}
promiseのcallbackの中から得られるresolve, reject関数は、スコープの外に持ち出して外部から呼び出すことが可能
globalに定義できなくて、特定のライブラリに渡さないといけないコールバックイベントをpromise化したいときに使える
やっていることはどうってこと無いのだが、これが可能ってことを知っておかないと書けない
普通にpromise触ってるとこれなかなか思いつかない気がするがどうだろう
このやり方を紹介 or 広めた人が誰なのか知らない
ぐぐってみると割とヒットする
javascript primise resolve outside
などで検索
上みたいにサクッと自分でresolveを持ち出すんでもいいし、ライブラリなどを探してもいいと思う
そしてついにECMAScriptに
ここでみた
これって「終わった」「失敗した」だけを通知するevent emitterみたいに見えるな
途中である、というのを判定するのは難しそうだが、
resolveされたら変数に保持するようにして、
それを見に行ってundefinedだったらpendingと判定すればいい?