Wenn ich das Versprechen lösen, sollte die Funktion wird ausgeführt fortsetzen:Versprechen lösen Verwirrung
function test(){
return new Promise(resolve=>{
resolve(5)
setTimeout(()=>{console.log(7)}, 2000}
})
}
Und dann rufe ich die Funktion wie diese
test().then(console.log);
So druckt 5, und dann nach 2 Sekunden, es druckt 7, wie ich erwartet habe. Aber wenn ich arbeite mit Syncthing nach resolve() funktioniert es anders:
function test(){
return new Promise(resolve=>{
resolve(5)
for(let i = 0; i < 100; i++)
console.log(i)
})
}
Jetzt druckt er die Zahlen von 0 bis 100, und dann druckt es 5. Aber ich erwartet, dass es 5 durch Entschlossenheit zurückzukehren() und nur dann drucken Sie alle anderen Sachen.
Nein. Sie sollten 'resolve resolve (5)' tun und danach nichts tun. Ansonsten, warum lösen Sie .... – yBrodsky
@ybrodsky nicht wahr. Sie können die Auflösung verwenden, ohne sie explizit zurückzugeben. Die einzige wichtige Sache, die zurückkommt, ist das "neue Versprechen". – Andrew
Das Schlüsselwort ist sollte. Irgendein praktisches Beispiel, in dem Sie nach der Entschlossenheit weitermachen wollen, innerhalb des Versprechens ?. – yBrodsky