2017-12-08 1 views
0

Ich habe ein Problem mit Versprechungen. Ich habe diesen Code:Promise.then() ausgeführt, bevor das Versprechen gelöst wird - Discord.js

let line = hey.fetchBans().then(() => { 
    myStuff(); 
    console.log(line); 
}); 

Das Problem ist, dass myStuff() ausgeführt, bevor fetchBans() behoben ist. Ich versuchte zu sehen, ob das das echte Problem war, das line notiert, und es druckt Promise { <pending> }

Was mache ich falsch?

+3

Bitte geben Sie weitere Informationen darüber, was hey.fetchBeans tut - dh seinen Quellcode – JanS

+2

* "Das Problem ist, dass myStuff() ausgeführt wird, bevor fetchBans() aufgelöst wird" * Nicht mit dem obigen Code, wenn wir annehmen 'fetchBeans' zurückgibt Das Versprechen, das du sagst, wird erst gelöst, nachdem 'myStuff' ausgeführt wurde. Bitte aktualisieren Sie Ihre Frage mit einem [mcve], das das Problem demonstriert, idealerweise ein ** runnable ** mit Stack Snippets (der '[<>]' Symbolleistenschaltfläche; [hier geht's] (https: //meta.stackoverflow) .com/questions/358992/ive-get-to-do-a-runnable-Beispiel-mit-Stack-Snippets-how-do-i-do-tha)). –

+0

Ich denke, der Promise-Status wird aktualisiert, nachdem die Callbacks aufgerufen wurden. Sie sollten Ihre erwarteten Werte als Parameter für den Rückruf verwenden. – tkausl

Antwort

1

line ist nicht das Versprechen, dass hey.fetchBans() zurückgegeben (und das erfüllen, bevor Sie Ihren Rückruf aufgerufen wird), ist es das Versprechen ist, dass .then(…) zurückgegeben (und die mit dem Ergebniswert des Rückrufs gelöst werden). Es wird immer innerhalb dieses Rückrufs anstehen.

+0

Vielen Dank, ich habe ganz vergessen alle Promises stuff -_- ' –

Verwandte Themen