Hallo ebody,
weder zeigt die MDN, wie die Promise-Version von createAudioFileAsync aussehen würde, noch zeigst Du, wie deine Funktion aussieht.
Wenn ein Promise festgelegt wird (egal ob erfüllt oder zurückgewiesen), bekommt es einen Wert.
Das geht über mehrere Stufen:
- Du rufst den Promise-Konstruktor auf (new Promise) und übergibst eine Funktion, die als Executor dient
- Der Promise-Konstruktor ruft den Executor auf und übergibt zwei Funktionen, resolve und reject.
- Der Executor leitet den asynchronen Vorgang ein und endet. Typischerweise registriert er dabei irgendwie und irgendwo eine Callbackfunktion, die vom Browser aufgerufen wird, sobald der asynchrone Vorgang endet oder abbricht.
- Die Callbackfunktion benötigt Kenntnis von resolve und reject. Das passiert automatisch, wenn es eine Funktion ist, die lokal im Executor definiert wurde (siehe 'Closures'). Andernfalls musst Du dem Callback resolve und reject mit anderen sinnvollen Mitteln bereitstellen, deiner Kreativität ist keine Grenze gesetzt.
- Sobald die Callbackfunktion läuft, entscheidet sie, ob das Promise erfüllt werden kann oder zurückgewiesen werden muss, und ruft dementsprechend resolve oder reject auf. Dabei übergibt sie ein Argument: an resolve den versprochenen Wert und an reject die Entschuldigung, warum das Versprechen nicht gehalten wurde.
Wenn Du im [[PromiseResult]] ein undefined
vorfindest, dann wurde sehr wahrscheinlich resolve ohne Argument aufgerufen. So, wie es im MDN Artikel passiert (der zu wenig auf den Erzeugungsteil von Promises eingeht).
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi