Poszukuję sposobu, z Node v7.6 lub nowszym, aby otrzymać obietnicę Bluebird (lub inną nie-rodzimą obietnicę), gdy zostanie wywołana funkcja asynchroniczna.Otrzymaj obietnicę Bluebirda z async czekają funkcje
W ten sam sposób można zrobić:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedPromise =() => Promise.resolve('value');
getResolvedPromise
.tap(...) // Bluebird method
.then(...);
Patrz: May I use global.Promise=require("bluebird")
Chcę być w stanie zrobić coś takiego:
global.Promise = require('Bluebird'); // Or Q/When
var getResolvedAsyncAwaitPromise = async() => 'value';
getResolvedAsyncAwaitPromise()
.tap(...) // Error ! Native Promises does not have `.tap(...)`
.then(...);
Wiem, że mogę użyj w dowolnej chwili coś takiego:
Bluebird.resolve(getResolvedAsyncAwaitPromise())
.tap(...);
Ale byłem ciekawy, jeśli byłby sposób na zmianę domyślnej obietnicy zwróconej przez AsyncFunction
. Konstruktor wydaje się być zamknięty:
Należy zauważyć, że AsyncFunction nie jest obiektem globalnym. Można go uzyskać, oceniając poniższy kod.
Object.getPrototypeOf(async function(){}).constructor
MDN reference on AsyncFunction
Jeśli nie ma sposobu, aby zmienić Obietnica konstruktora AsyncFunction
„s, chciałbym poznać przyczyny tego blokowania.
Dziękujemy!
Nie, to nie jest możliwe. Gdyby tak było, oznaczałoby to, że na całym świecie nadpisałeś obietnicę, która jest koszmarem. – Bergi