Concept

Async/await

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.

Graph Chatbot

Chattez avec Graph Search

Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.

AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.