Wenn das Ereignis someevent
ausgelöst wird, möchte ich einfach warten, bis das Versprechen gelöst ist, bevor Sie fortfahren. Es dauert jedoch lange, bis slowFunctionThatReturnsPromise aufgelöst wird, und der gesamte Prozess wird beendet, bevor er aufgelöst wird. Daher ist es nie abgeschlossen. Ich hätte gedacht, mit einer then
würde warten auf das Versprechen gelöst werden, aber ich kann nicht herausfinden, warum es nicht warten.Warten Sie, bis das Versprechen in einer emitter.on-Listener-Funktion aufgelöst wird
emitter.on('someevent', listener)
var listener = function()
{
x.slowFunctionThatReturnsPromise()
.then(function()
{
console.log('done');
})
}
* Warten * und * asynchron * sind Dinge, die einander entgegengesetzt sind. * Der * synchrone * Code hält den Prozess beschäftigt, bevor er mit einem anderen Code im selben Aufrufstapel fortfährt, während der * asynchrone * Code nur * aufgerufen wird, nachdem * der gerade laufende Aufrufstapel abgeschlossen ist. – trincot
Ich brauche das Versprechen von 'slowFunctionThatReturnsPromise' gelöst werden, bevor die' Listener' Funktion – jmccure
'' dann 'Callbacks asynchron ausgeführt werden, so von Natur aus (und Absicht) verspricht solche Rückrufe * nicht * vor der Rückkehr ausgeführt werden das Versprechen, aber nachdem der aktuelle Code-Task abgeschlossen ist. Also: nicht möglich. – trincot