Promiseを使用する既存のライブラリを見つけましたが、bluebirdは使用していません。ライブラリ関数には、.map()
や.tap()
のようなbluebirdの追加機能がすべて付属しているわけではありません。 「通常」または「非ブルーバード」プロミスを、ブルーバードが提供する追加機能をすべて備えたブルーバードプロミスに変換するにはどうすればよいですか。
既存のプロミスをPromise.promisify
とPromise.resolve
でラップしようとしましたが、どちらも機能していないようです。
使用する - Promise.resolve
-他の実装からのプロミスのように、thenableを受け取り、Bluebirdプロミスに同化します。
「解決」という用語 は誤解を招く可能性があり、「実現」と同じ意味ではなく、別の約束に従って結果に落ち着く可能性があることに留意してください。
Promiseをbluebirdのpromiseに変換し、何も解決せずにcustomPromise
を返す場合、チェーン内のすべてのbluebirdsカスタムメソッドにアクセスできます。
Promise.resolve().then(function(){
return customPromise()
})
または
Promise.resolve(customPromise())
BluebirdのPromise.method
!
const Promise = require('bluebird');
const fn = async function() { return 'tapped!' };
bluebirdFn = Promise.method(fn);
bluebirdFn().tap(console.log) // tapped!
fn().tap(console.log) // error
Bluebird.resolve()
メソッドを使用して、ネイティブjs promiseをbluebird promiseに変換します。
public getBatched(query: QueryBuilder | Raw): Bluebird<any> {
return Bluebird.resolve(this.cache.getBatched(query));
}