169 похожих чатов

Здраствуйте. Объясните, пожалуйста, почему сделали так, чтобы await можно было

использовать только в асинхронных функциях? именно спрашиваю зачем так сделали, что мешает использовать await в любом месте программы?

18 ответов

6 просмотров

Ты про почему нельзя писать await без ключевого слова async или await вообще без обертки? или и то, и то?

Evgeniy-Churikov Автор вопроса
Vladyslav Katrychᅠᅠᅠ ٴ ͜ٴ
Ты про почему нельзя писать await без ключевого сл...

почему нельзя писать await в неасинхронной функции (объявленной без async)

Evgeniy Churikov
почему нельзя писать await в неасинхронной функции...

Потому что это неправильно. Так ты говоришь, что в той функции есть асинхронный код и позволяешь другим отреагировать на это(поскольку async возвращает промисс). Возможно, есть ещё более низкоуровневые причины.

Полный ответ на этот вопрос довольно сложный. Если вкратце, то в текущей реализации JS это нужно для работы Event Loop

Evgeniy Churikov
почему нельзя писать await в неасинхронной функции...

Синхронная функция имеет право вернуть что угодно (даже промис) Асинхронная функция обязана вернуть промис

Evgeniy-Churikov Автор вопроса
Vladyslav Katrychᅠᅠᅠ ٴ ͜ٴ
Потому что это неправильно. Так ты говоришь, что...

то-есть основная суть в том, что я не могу использовать асинхронный код в синхронных функциях? но разве не могу?

Evgeniy-Churikov Автор вопроса
Nelkor
Полный ответ на этот вопрос довольно сложный. Если...

пока что моих знаний недостаточно, чтобы это понять, как-нибудь гляну про это

Evgeniy Churikov
то-есть основная суть в том, что я не могу использ...

Вся программа на JS синхронная. Но ты ведь можешь в ней использовать асинхронный код 😏

Evgeniy Churikov
почему нельзя писать await в неасинхронной функции...

потому что асинхронная функция может "вставать на паузу" пока ждет результат некой асинхронной операции. А обычная функция не предназначена для такого, и асинхронным операциям в ней не место

Evgeniy-Churikov Автор вопроса
Evgeniy-Churikov Автор вопроса
Jakhongir
потому что асинхронная функция может "вставать на ...

Хорошо, это я понял, тогда другой вопрос. Почему вебшторм говорит мне использовать await с любой асинхронной функцией внутри асинхронной функции?

Evgeniy-Churikov Автор вопроса
Jakhongir
можно больще скрин сделать?

чего конкретно, кода функции?

Evgeniy-Churikov Автор вопроса
Jakhongir
да, куда эту претензию делает вебшторм

Я кажется понял, он мне предлагает либо дописать await, либо then. Похоже ему просто не нравится, что я никак не обрабатываю, что будет непосредственно после функции

Evgeniy Churikov
то-есть основная суть в том, что я не могу использ...

Я слегка не правильно написал. Суть в том, что await всегда тормозит функцию. Теперь представь, что бы было без async ключевого слова. Есть два исхода, либо они убирают этот функционал с постоянным торможением, но тогда await не делает ровным счётом ничего без async. Либо оставляют, но делают этим ещё хуже. Так как человек вызывает с виду обычную синхронную функцию, не делает никаких ожиданий, а она ему по какой то причине тормозит всё. Не стоит сравнивать await и промисы. Промисы ты можешь спокойно обрабатывать через next. в то время как await без async теряет весь функционал.

Evgeniy-Churikov Автор вопроса
Vladyslav Katrychᅠᅠᅠ ٴ ͜ٴ
Я слегка не правильно написал. Суть в том, что aw...

спасибо большое, теперь я хотя бы примерно понимаю, зачем оно так сделано

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
70
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Люди добрые, помогите с идеями, потому что свои закончились. У клиента падает софтина в момент инициализации модуля OtlEventMonitor на RegisterWindowMessage('Gp/OtlTaskEvents/...
Михаил Усков
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
GridView fully ignored first parent(SizedBox), and take width from second parent(Container). How can I constrain GridView by first parent? Widget build(BuildContext context) {...
Hamster
1
Hey there Which is the best Linux destro for developers (coding)? To my research on reddit, they said Linux mint is good for mid level spec and Ubuntu for high Lev hardwar...
Wiz 🪄
11
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
Карта сайта