La valeur de retour dans la programmation asynchrone: renvoyez directement
ou utilisez ? Task
return await
Dans la programmation asynchrone, les développeurs sont souvent enchevêtrés dans le retour ou l'utilisation de la structure
à travers une scène spécifique. Task<T>
return await
Pourquoi choisir return await
au lieu de retourner directement
Dans des circonstances normales, retourne return await
et Task<T>
fonctions structurelles. Cependant, il existe des différences subtiles entre les deux lorsque l'instruction ou plus couramment utilisée dans le bloc .
Veuillez considérer l'exemple de code suivant: Task<T>
return await
using
try
Analyse de scène return await
Dans la première méthode (
), l'instruction<code class="language-csharp">Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } }</code>
<code class="language-csharp">async Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>
Retour. Cela peut se produire pendant longtemps avant la fin de la méthode et les erreurs sont causées par version prématurée.
Au contraire, la deuxième méthode (en utilisant) attendra avant la fin de la méthode await
, puis libérez using
. Cela garantit la version correcte et le fonctionnement normal de . DoAnotherThingAsync()
Foo
Conclusion Foo
Bien que await
soit généralement équivalent à la fonction DoAnotherThingAsync()
directement, ce dernier est meilleur que d'utiliser l'instruction Foo
ou dans la scène Foo
dans le bloc
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!