Ich verstehe, dass Versprechungen es einfacher macht, mit asynchronen Code zu arbeiten, anstatt Callback-Funktionen zu verwenden, aber ich bin nicht so klar über die Vorteile, sie für reinen synchronen Code zu verwenden.Gibt es irgendwelche Vorteile beim Einbinden von synchronem Code in ein JavaScript-Versprechen?
Nehmen wir an, ich habe eine Funktion, die eine teure Berechnung durchführt, die 5 Sekunden dauert (nicht asynchron, nur reine Berechnungen). Da Versprechungen auf dem gleichen Thread wie die einzelne JS Thread ausgeführt wird, gibt es irgendwelche Vorteile zu tun dies:
expensiveFunction() {
// expensive function that takes 5 seconds to complete
}
expensiveFunction();
doSomethingAfterwards();
statt dessen:
expensiveFunctionPromise() {
return new Promise(function(resolve) {
// expensive function that takes 5 seconds to complete
resolve();
}
}
expensiveFunction().then(doSomethingAfterwards);
bearbeiten: Ich habe eine jsfiddle dass scheint zwischen den beiden keinen Unterschied zu zeigen:
https://jsfiddle.net/nu1wj681/
die Sync-Version dauert ca. 3 Sekunden pro Schleife für insgesamt 6 Sekunden, während die Versprechen/Async-Version 6 Sekunden pro Schleife dauert, aber die Gesamtzeit beträgt immer noch 6 Sekunden, was bedeutet, dass sie beide parallel laufen, aber auch gleichzeitig Faden.
Nein. Es macht nur Ihren Code kompliziert. Der einzige Grund, warum Sie dies tun sollten, ist, wenn die Funktion _might_ an einem bestimmten Punkt asynchron wird. –
Wenn Sie über teuren synchronen Code verfügen, sollten Sie sich [Web Workers] (https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) ansehen. Die Verwaltung der Web-Mitarbeiter kann ein guter Grund sein, Versprechungen zu verwenden. – JLRishe