Viel zu oft wird, aufgrund mangelnden Verständnis der aktuellen Funktion und Struktur von Software, nach einer neuen Implementierung gerufen.
Ich habe mir ein kleines Tutorial angeschaut zum Thema Promis, Async/Await in Javascript. Ich habe das zum Verständnis mal in PHP überführt.
Wie kann ich entscheiden ob ich auf eine relationale oder objektorientierte Datenbank setzen soll?
Gartenberegnung im Smart Home
// Task 1: Translate the story into code. const onMyBirthday = (isKayoSick) => { return new Promise((resolve, reject) => { setTimeout(() => { if (!isKayoSick) { resolve(2); } else { reject(new Error("I am sad")); } }, 2000) }); }; console.time("Timer"); onMyBirthday(false) .then((result) => { console.timeLog("Timer"); console.log(`I have ${result} cakes`); }) .catch((error) => { console.timeLog("Timer"); console.log(error); }) .finally(() => { console.log("Party"); });
<?php function onMyBirthday(bool $isKayoSick): int { sleep(2); if ($isKayoSick === false) { return 2; } else { throw new Exception("I am sad"); } } $timeStart = microtime(true); try { $result = onMyBirthday(false); echo microtime(true) - $timeStart . PHP_EOL; echo "I have $result cakes" . PHP_EOL; } catch (Exception $e) { echo microtime(true) - $timeStart . PHP_EOL; echo $e; } finally { echo "Party" . PHP_EOL; }
„A promise represents a single result of an asynchronous operation. It is not necessarily available at a specific time, but should become in the future.“
Als ich gestern das Promise, Async/Await in 20 minutes | JavaScript Tutorial angeschaut habe, ist mir der die Ähnlichkeit eines einfachen Promise zum try,catch,finaly in PHP aufgefallen. Um das einmal zu verdeutlichen habe ich die erste Beispielaufgabe von Thu Nghiem in PHP interpretiert, um es deutlich zu machen.
Wichtig ist, das in JavaScript die Codeausführung weiter läuft, solange man nicht explizit das Promise "auflöst". Das sleep(2) in PHP ist hier nur exemplarisch. Das ist z.b. in Javascript von Vorteil, wenn man den ein alert() oder confirm() verwendet, und mit dem Promise nicht den Browser "anhält", oder als typischer Fall die Abfrage einer API.
Wer sich für Promise Implementierungen in PHP interessiert, sollte sich PHP-HTTP promise und Guzzle Promises anschauen. Ein gutes tutorial zu ReactPHP findet sich hier
Article relase date: / Last update: