@Rouslan943

Асинхронность в dart?

Всем привет. Обьясните пожалуйста мне новичку одно но. Дарт вроде однопоточный язык - он может выполнять только одну задачу в одно время ? А как так работает future api ? Запускает изолят типа и там обрабатывает ?
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
Lucian
@Lucian
https://t.me/MakeFreelance
К примеру вы отправили запрос в сеть чтобы получить фоточку, если использовался синхронный код, то поток бы заблокировался и приостановились все задачи и функции, пока фоточка идет из сети.

В случае асинхронного, планировщик не ждет пока придет ответ и передает управление следующей функции в месте где написано await. Когда придет ответ с фоточкой, планировщик снова передаст управление в то место где был написан await.

"Изолятом" в данном случае выступает функция обернутая во Future либо с указанием async.
— Код внутри изолированной функции будет выполнен последовательно.
— Функции обернутые во Future или определенные как async будут выполнены асинхронно, без ожидания выполнения других таких же асинхронных функций.
— Если вызвать sleep(300) в обычной функции, все уснет на 5 минут, ничего происходить не будет.
— Если вызвать await sleep(300) в асинхронной, то уснет только эта функция.
await указывает планировщику что тут функция хочет подождать и он может передать управление любой другой.

Если бы наш мир был однопоточный и синхронный, то вы бы не проснулись утром, если бы я все еще продолжал писать это сообщение. Если бы наш мир был однопоточный и асинхронный, то планировщик отключал бы меня на какое-то время, при каждом упоминании await в этом ответе, чтобы другие люди могли заниматься своими делами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Neonoviiwolf
Flutter developer
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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