JavaScript
promise
es6
0

既にあるcallback形式の関数を互換性を保ちつつPromiseにも対応させる

ES2015でPromiseについで、ES2017でAsync/Awaitが追加され、Promiseが更に使いやすくなってきているのもかかわらず、古くからあるパッケージなどは、対応させるのが大変なのか、一向に対応してくれないものもたくさんあります。

ある日突然callbackからPromiseに変わったらみんな戸惑うので、callbackが無いときにPromiseを返すような処理を書かなくてはなりません。単純に考えてみれば、callbackがある時の処理と、callbackがなくPromiseを返す処理、で倍の量になってしまうのではないかと僕も思っていました。

しかし、実際にそうでしょうか?

その答えはytdl-coreのソースコードを眺めているときでした。

この関数では、引数にcallbackが無いときに、自身をcallback付きで呼び出し、その中でresolve/rejectをするPromiseを返していたのです。1

これで既存のコードも楽にPromiseに対応できそうです!

よきPromiseライフを


  1. 実際のソースコードはこちら