Promise[A: Any #share]
Обещание, которое в конечном итоге произведёт результат типа A. Это обещание может быть выполнено или отклонено.
За этим обещанием может следовать любое количество других обещаний.
actor tag Promise[A: Any #share]
Конструкторы
create
new tag create() : Promise[A] tag^
Возвращает
- Promise[A] tag^
Публичные методы
apply
Выполнить обещание.
be apply( value: A)
Параметры
- value: A
reject
Отклонить обещание.
be reject()
Публичные функции
next[B: Any #share]
Присоединить обещание после текущего.
Когда это обещание выполняется, результат типа A передаётся в функцию выполнения, создавая промежуточный результат типа B. Затем это используется для выполнения следующего обещания в цепочке.
Если функция выполнения отсутствует или вызывает ошибку, то следующее обещание в цепочке будет отклонено.
Если это обещание отклонено, функция отклонения этого шага вызывается без входных данных, создавая промежуточный результат типа B, который используется для выполнения следующего обещания в цепочке.
Если функция отклонения отсутствует или вызывает ошибку, то следующее обещание в цепочке будет отклонено.
fun tag next[B: Any #share]( fulfill: Fulfill[A, B] iso, rejected: Reject[B] iso = qualify) : Promise[B] tag
Параметры
Возвращает
- Promise[B] tag
add[optional B: Any #share]
Добавить два обещания в одно обещание, которое возвращает результат обоих, когда они выполнены. Если любое из обещаний отклонено, то новое обещание также отклоняется.
fun tag add[optional B: Any #share]( p: Promise[B] tag) : Promise[(A , B)] tag
Параметры
- p: Promise[B] tag
Возвращает
- Promise[(A , B)] tag
join
Создаёт обещание, которое выполняется, когда выполняется получатель и все обещания в заданном итераторе. Если получатель или любое обещание в последовательности отклонены, то новое обещание также отклоняется.
Объединить p1 и p2 с существующим обещанием, p3.
use "promises"
actor Main
new create(env: Env) =>
let p1 = Promise[String val]
let p2 = Promise[String val]
let p3 = Promise[String val]
p3.join([p1; p2].values())
.next[None]({(a: Array[String val] val) =>
for s in a.values() do
env.out.print(s)
end
})
p2("second")
p3("third")
p1("first")
fun tag join( ps: Iterator[Promise[A] tag] ref) : Promise[Array[A] val] tag
Параметры
Возвращает
select
Возвращает обещание, которое выполняется, когда выполняется хотя бы одно из обещаний, результатом чего является кортеж его значения и другого обещания.
fun tag select( p: Promise[A] tag) : Promise[(A , Promise[A] tag)] tag
Параметры
- p: Promise[A] tag
Возвращает
timeout
Отклонить обещание после истечения срока действия в наносекундах.
fun tag timeout( expiration: U64 val) : None val
Параметры
- expiration: U64 val
Возвращает
- None val
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/promises-Promise