Y a-t-il tous scénario où l'on écrit une méthode comme celle-ci :
public async Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return await DoAnotherThingAsync();
}
au lieu de cela :
public Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return DoAnotherThingAsync();
}
aurait-elle un sens ?
Pourquoi utiliser return await
alors que vous pouvez directement renvoyer Task<T>
de l'intérieur DoAnotherThingAsync()
invocation ?
Je vois un code avec return await
dans tant d'endroits, je pense que j'ai peut-être raté quelque chose. Mais pour autant que je comprenne, ne pas utiliser les mots-clés async/await dans ce cas et renvoyer directement la tâche serait fonctionnellement équivalent. Pourquoi ajouter des frais généraux supplémentaires de await
couche ?
7 votes
Je pense que la seule raison pour laquelle vous voyez cela est que les gens apprennent par imitation et qu'ils utilisent généralement (s'ils n'en ont pas besoin) la solution la plus simple qu'ils peuvent trouver. Donc les gens voient ce code, utilisent ce code, ils voient que ça marche et à partir de maintenant, pour eux, c'est la bonne façon de faire... Il ne sert à rien d'attendre dans ce cas.
21 votes
Il y a au moins une différence importante : propagation des exceptions .
1 votes
Je ne comprends pas non plus, je ne comprends pas du tout ce concept, il n'a aucun sens. D'après ce que j'ai appris, si une méthode a un type de retour, elle DOIT avoir un mot-clé return, n'est-ce pas la règle du langage C# ?
1 votes
@monstro la question de l'OP contient l'instruction return pourtant ?
1 votes
github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/