Bir async işlevi çağrıldığında, Bluebird Promise (veya herhangi bir yerel olmayan söz) almak için Node v7.6 veya üstü ile bir yol arıyorum.Async işlevlerinden Bluebird Promise alın
Aynı şekilde yapabileceğim:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedPromise =() => Promise.resolve('value');
getResolvedPromise
.tap(...) // Bluebird method
.then(...);
Bkz: Ben böyle bir şey yapmak mümkün istiyorum May I use global.Promise=require("bluebird")
:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedAsyncAwaitPromise = async() => 'value';
getResolvedAsyncAwaitPromise()
.tap(...) // Error ! Native Promises does not have `.tap(...)`
.then(...);
bundan emin oluyorum herhangi bir anda aşağıdaki gibi kullanın:
tarafından döndürülen varsayılan Promise değiştirmek için bir yol olurduBluebird.resolve(getResolvedAsyncAwaitPromise())
.tap(...);
10 Ama meraklı oldu. Yapıcı kapalı görünüyor: AsyncFunction küresel nesne değil
, bu kilitleme nedenlerini bilmek istiyorum.Not. Aşağıdaki kodu değerlendirerek elde edilebilir.
AsyncFunction
'ın Promise yapıcı değiştirmek için hiçbir yolu varsaMDN reference on
AsyncFunction
Object.getPrototypeOf(async function(){}).constructor
Teşekkür ederiz!
Hayır, Bu mümkün değil. Eğer öyleyse, bu, küresel bir şekilde, bir kabus olan vaat uygulamasının üzerine yazacağınız anlamına gelir. – Bergi