kw await
Зарезервированное слово
Список слов: §1.4
Синтаксис
Primary = Literal | Path | "it" | "self" | "(" Expr { "," Expr } ")" | ListLit | MapLit
| StructLit | Lambda | Block | If | Match | For | While | Loop | Scope | Select | Query
| "spawn" ( Postfix | Block ) | "await" Unary | "atomic" [ "(" Args ")" ] Block
| "return" [ Expr ] | "fail" Expr | "yield" Expr | "respond" Expr | "break" [ Label ] [ Expr ]
| "continue" [ Label ] | "emit" Path "(" Expr ")" | "unsafe" Block | "blocking" Block
| "comptime" Block | "." Ident [ "(" [ Args ] ")" ] ;For = [ Label ":" ] [ "inline" ] "for" [ "await" ] Pattern "in" Expr [ "where" Expr ] Block ;Грамматика: Прил. A
Определяется в
- 6.3 Вызов приостанавливаемых функций — Вызов приостанавливаемой функции в позиции инструкции или обычного выражения выполняется немедленно; текущая задача ждёт результат (неявный
- 8.2 Точки приостановки — Задача может уступить поток только в точках приостановки
- 8.4 Цепочки — Цепочка связывает асинхронные шаги так, что выполняется либо вся цепочка, либо возвращается первая необработанная ошибка.
- 5.2 Приоритет и ассоциативность — Приоритет и ассоциативность
- 8.3 Task — Task<T, E> — ленивое вычисление.
- 10.4 Broadcast — локальная рассылка — Broadcast<T> доставляет каждый опубликованный элемент всем текущим подписчикам.
- 5.6 Циклы — for принимает Iterable<T> (в том числе iter<T>, коллекции, диапазоны); for await — Streamable<T>.
- 10.3 Стримы — Тип stream<T, E = never>.
Примеры
let page = Users.get(id)
-> (Orders.recent(it.id), Recs.for(it.id))
-> (orders, recs) => Page{ orders, recs }
~> Audit.log("page", id)
!> Timeout => Page.empty()
within PAGE_DEADLINE
retry 2
let html = await pagelet prices = Broadcast<Tick>(buffer: TICK_BUFFER, slow: .DropOldest, replay: 1)
scope {
spawn { for await t in Exchange.feed() { prices.publish(t) } }
spawn { for await t in prices.subscribe() { ui.render(t) } }
spawn { for await t in prices.subscribe() { stats.add(t) } }
}
impl Market {
rpc ticks() -> stream<Shared<Tick>, Lagged> => prices.subscribe() // каждому клиенту
}— 10.4 Broadcast — локальная рассылка
Связанные диагностики
it-outside-chain, chained-comparison, task-reuse, break-value, outside-loop, yield-outside-stream