Как стать автором
Обновить

Комментарии 7

Это пример из оригинальной статьи, Стивен в данном случае показывает, как из синхронного кода сделать асинхронный и что в данном случае генерируется компиллятором. В статье идут отсылки к предыдущим частям, поэтому я рекомендую начинать читать с первой части.

автор. а можете разъяснить какой вобще смысл в примере в начале стать - взять асинхронную ф-ию и ждать ее выполнения (фактически сделать ее синхронной ) внутри опять асиннхрнной ф-ии?

У любой функции есть результат выполнения. Даже если это void — функция всё ещё может свалиться с исключением, и наличие либо отсутствие оного тоже входит в понятие результата.


Если результат есть — кому-то он нужен. Это неверно для некоторых инфраструктурных функций, но для бизнес-логики это аксиома.


Если нам нужен результат асинхронной функции — нам нужен способ его дождаться и достать. Желательно, без пустого занимания потока, т.е. асинхронно. Для этого и придумали оператор await.


Где именно в этой цепочке вы видите отсутствие смысла?

Await означает: "Позови, когда выполнится эта штука и я обработаю результат тем кодом, который идёт после этого вызова". Фактически, на этом месте нить перестанет выполнять код этой функции и займётся чем-то другим.

Мы сделали ее синхронной, если бы заставили нить ждать результат: либо став неактивной, либо постоянно переспрашивая "все уже готово? Все уже готово?" В
в цикле как осел в Шреке.

Грубо говоря, можно считать, что остаток функции после await - это колбек, который вызовут по готовности результата

Мы сделали ее синхронной, если бы заставили нить ждать результат

await разве не ждёт результата?

У меня почему-то не работает «сообщить об ошибке», поэтому сообщаю здесь

«Task is known specially to C#» (у вас — «Task существует специально для C#») я бы перевел по смыслу: «конкретно известен компилятору C#». Если же переводить буквально то это будет «специально известен для C#» — в любом случае никакого «существует» там нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации