Файл: Основные правила работы с функциями: примеры и ограничения использования функций в различных языках программирования.pdf
Добавлен: 31.03.2023
Просмотров: 56
Скачиваний: 2
3.3 Асинхронные функции в C#
В C# Аналог класса Promise – класс Task. Все асинхронные функции в C# имеют тип возвращаемого значения Task [18]. Рассмотрим пример.
using System.Threading.Tasks;
async Task sleep(int time)
{
await Task.Delay(time);
}
async Task Main(string[] args)
{
Console.WriteLine("Сейчас");
await sleep(5000);
Console.WriteLine("Прошло 5 секунд");
}
‘System.Threading.Tasks’ – пространство имён содержащее тип ‘Task’. В этом примере мы создаём асинхронную функцию ‘sleep’, где используем статическую функцию ‘Task.Delay’. Затем, в асинхронной функции ‘Main’, мы используем функцию ‘sleep’ оператором ‘await’.
Рассмотрим ещё один пример:
using System.Net.Http;
using System.Threading.Tasks;
HttpClient client = new HttpClient();
async Task Main()
{
try
{
string responseBody = await client.GetStringAsync("http://google.com");
Console.WriteLine(responseBody);
}
catch (HttpRequestException)
{
Console.WriteLine("Ошибка, запрос провалился");
}
Здесь мы совершаем HTTP запрос и пишем ответ в консоль используя, асинхронные функции. Разберём код.
using System.Net.Http;
Используем это пространство имён для работы с HTTP.
HttpClient client = new HttpClient();
Создаём новый HTTP клиент для выполнения запроса.
string responseBody = await client.GetStringAsync(
"http://google.com");
Console.WriteLine(responseBody);
Получаем HTTP ответ, используя асинхронную функцию ‘client.GetStringAsync’.
Вывод 3
Асинхронные функции в программировании позволяют легко имплементировать асинхронную модель. В некоторых случаях асинхронные функции могут сохранить не малое время для исполнения задач. Они особо полезны, когда нужно выполнять несколько задач параллельно.
Синтаксис асинхронных функция очень похож в JavaScript и C#. В обоих
языках присевает абстрактный класс для асинхронных задач – Promise в JavaScript и Task в C#.
Заключение
Как было сказано раньше, функции – одна из главных концепций в программировании. В этой работе мы рассмотрели фундаментальные правила и концепции функций в JavaScript и C#, практические примеры их использования, асинхронные функции, а также техники как рекурсия и функции обратного вызова.
Библиография
1. Eloquent JavaScript, 3rd Edition: A Modern Introduction to Programming. Marijn Haverbeke. 2018. – 472p.
-
https://eloquentjavascript.net/03_functions.html#p_H5CjsrL2Dh ↑
-
https://eloquentjavascript.net/03_functions.html#h_tqLFw/oazr ↑
-
https://eloquentjavascript.net/03_functions.html#h_jxl1p970Fy ↑
-
https://eloquentjavascript.net/03_functions.html#h_XqQR5FlX+8 ↑
-
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Defining_functions ↑
-
https://eloquentjavascript.net/03_functions.html#p_H5CjsrL2Dh ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/methods ↑
-
https://eloquentjavascript.net/03_functions.html#h_jxl1p970Fy ↑
-
https://eloquentjavascript.net/11_async.html#h_n9ws/jdPpb ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/ ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/delegates/#delegates-overview ↑
-
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1?view=netframework-4.8 ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/ ↑
-
https://eloquentjavascript.net/11_async.html#p_UMfVhtpDiH ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/methods#async-methods ↑
-
https://eloquentjavascript.net/11_async.html#h_sdRy5CTAP/ ↑
-
https://eloquentjavascript.net/18_http.html#h_1Iqv5okrKE ↑
-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/methods#async-methods ↑
-
https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.8 ↑