Информация об изменениях

Сообщение Re: Зачем нам асинхронность? от 05.08.2020 11:54

Изменено 05.08.2020 11:57 Pauel

Re: Зачем нам асинхронность?
Здравствуйте, Kolesiki, Вы писали:

K>Но вот async?...

K>Пусть это будет команда Save. Мы нажали, асинхронно вышли из метода, куда-то даже полезли нажимать другие команды, а save всё ещё работает! Хуже того — у неё могут возникнуть проблемы!
K>Ну и вот какой смысл "не ждать завершения команды", если всё равно тебе прилетит по лбу? Хуже того — ты понадеялся на УСПЕШНЫЙ сэйв, а документ уже испортил!
...
K>Мне опыт говорит, что это всё переоценённое фуфло. Но если у вас есть прям идеальные случаи под async, не поленитесь, черкните ваш случай!

async/await это не для асинхронных методов, а для языковой поддержки многозадачности.
В результате вместо кучи приседаний с воркерами, потоками и прочей низкоуровневой болтовнёй получаешь нечто навроде
run(async (model) => model.burnDown(await model.from(url)));

Надо — жди. Не надо — не жди. Зато незачем городить огород из воркеров, передавать им параметры в очередь и заниматься прочими глупостями.
Фактически при помощи этих примитивов очень легко вытеснить тяжелый процессинг в другой вычислитель.
Re: Зачем нам асинхронность?
Здравствуйте, Kolesiki, Вы писали:

K>Но вот async?...

K>Пусть это будет команда Save. Мы нажали, асинхронно вышли из метода, куда-то даже полезли нажимать другие команды, а save всё ещё работает! Хуже того — у неё могут возникнуть проблемы!
K>Ну и вот какой смысл "не ждать завершения команды", если всё равно тебе прилетит по лбу? Хуже того — ты понадеялся на УСПЕШНЫЙ сэйв, а документ уже испортил!
...
K>Мне опыт говорит, что это всё переоценённое фуфло. Но если у вас есть прям идеальные случаи под async, не поленитесь, черкните ваш случай!

async/await это не для асинхронных методов, а для языковой поддержки многозадачности.
В результате вместо кучи приседаний с воркерами, потоками и прочей низкоуровневой болтовнёй получаешь нечто навроде
run(async (model) => model.burnDown(await model.from(url)));

Надо — жди. Не надо — не жди. Зато незачем городить огород из воркеров, передавать им параметры в очередь и заниматься прочими глупостями.
Фактически при помощи этих примитивов очень легко вытеснить тяжелый процессинг в другой вычислитель.

Скажем, при некоторых параметрах(консольное исполнение) выполняем и ждем по месту, а при других параметрах(ui, сервер и тд) — вытесняем куда угодно, абы не мешало. Код от этого меняться не должен.