Concept

Async/await

Résumé
In computer programming, the async/await pattern is a syntactic feature of many programming languages that allows an asynchronous, non-blocking function to be structured in a way similar to an ordinary synchronous function. It is semantically related to the concept of a coroutine and is often implemented using similar techniques, and is primarily intended to provide opportunities for the program to execute other code while waiting for a long-running, asynchronous task to complete, usually represented by promises or similar data structures. The feature is found in C# 5.0, C++20, Python 3.5, F#, Hack, Julia, Dart, Kotlin 1.1, Rust 1.39, Nim 0.9.4, JavaScript ES2017, Swift 5.5 and Zig, with some experimental work in extensions, beta versions, and particular implementations of Scala. F# added asynchronous workflows with await points in version 2.0 in 2007. This influenced the async/await mechanism added to C#. Microsoft released a version of C# with async/await for the first time in the Async CTP (2011). And were later officially released in C# 5 (2012). Haskell lead developer Simon Marlow created the async package in 2012. Python added support for async/await with version 3.5 in 2015 adding 2 new keywords, async and await. TypeScript added support for async/await with version 1.7 in 2015. Javascript added support for async/await in 2017 as part of ECMAScript 2017 JavaScript edition. Rust added support for async/await with version 1.39.0 in 2019 with 1 new keyword async and a lazy eval await pattern. C++ added support for async/await with version 20 in 2020 with 3 new keywords co_return, co_await, co_yield. Swift added support for async/await with version 5.5 in 2021, adding 2 new keywords async and await. This was released alongside a concrete implementation of the Actor model with the actor keyword which uses async/await to mediate access to each actor from outside. The C# function below, which downloads a resource from a URI and returns the resource's length, uses this async/await pattern: public async Task FindPageSizeAsync(Uri uri) { var client = new HttpClient(); byte[] data = await client.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.