Hack mit neuem yield-Keyword imitiert C#-await()
Kommentare

Bitbucket-Member Matt Pryor hat sich das neue yield-Keyword der Generators aus PHP 5.5 vorgenommen, um damit die Funktionalität des .NET-Features „await“ nachzuahmen. Letzteres gilt als die Neuerung im

Bitbucket-Member Matt Pryor hat sich das neue yield-Keyword der Generators aus PHP 5.5 vorgenommen, um damit die Funktionalität des .NET-Features „await nachzuahmen. Letzteres gilt als die Neuerung im jüngsten Release von Microsofts PHP-Konkurrenten. Es dient dort als syntaktische Vorlage zum Implementieren asynchroner Programmfeatures. Für die Rekonstruktion dieses Features in PHP wurde mkjpryor/async mit einem Scheduler ausgestattet, mit dem callable Objects registriert werden können, um bei Scheduler Ticks ausgeführt zu werden.

Der wahre Trick befindet sich allerdings in der AsyncAction-Klasse. Wenn ein Generator React-Promises yieldet, wartet die AsyncAction-Klasse, bis das geyieldete Promise erfüllt wurde, bevor es den Wert an den Generator zurückliefert. Der Generator wird anschließend laufen, bis er entweder per exit endet, oder ein weiteres Promise yielden, sodass der Prozess sich wiederholt.

mkjpryor/async ist eng verzahnt mit der React Event Loop, womit sich Promise-basierter, asynchroner Code schreiben lässt. Somit ließe sich ein nicht-blockierendes I/O-System erschaffen, wie man es von Node.js kennt; jedoch würde dieser Code ähnlich gut lesbar bleiben wie synchroner Code.

Mehr erfahrt Ihr auf der Asnyc-Seite auf Bitbucket.

Bild: son imitate father von Shutterstock / Urheberrecht: Blaj Gabriel

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -