Re[7]: Можно ли избавиться от async|await?
От: mrTwister Россия  
Дата: 16.12.25 09:06
Оценка:
Здравствуйте, Shmj, Вы писали:


S>Вся суть async/await — в том что можно получить Task/Promise/Future и манипулировать ими. Т.е. можете дождаться результата — а можете не дожидаться — но не просто не дожидаться — а заиметь промис, в котором будет результат.


S>Без возможности получить промис — все теряет смысл.


Все это есть в go:
// Вот моя асинхронная функция
func sum(a, b int) int {
    return a + b
}

// Я могу вызвать ее и дождаться результата (поток ОС при этом не блокируется)
x := sum(1, 2)

// Я могу вызвать и не дожидаться результата (при этом несмотря на создание новой горутины, это может все работать на одном единственном потоке ОС)
go sum(1, 2)

// В крайне редких кейзах, когда мне не нужен результат прям сейчас, а нужен когда-то потом, то я могу написать
result := make(chan int)
go func(){result <- sum(1,2)}()
... куча кода
println(<-result)


Во всех вариантах это асинхронный код, который не блокирует потоки ОС и конкурентно таких функций может быть запущено сотни тысяч
лэт ми спик фром май харт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.