Spec-Zone.ru › Pony

Promise[A: Any #share]

[Source]

Обещание, которое в конечном итоге произведёт результат типа A. Это обещание может быть выполнено или отклонено.

За этим обещанием может следовать любое количество других обещаний.

actor tag Promise[A: Any #share]

Конструкторы

create

[Source]

new tag create()
: Promise[A] tag^

Возвращает

  • Promise[A] tag^

Публичные методы

apply

[Source]

Выполнить обещание.

be apply(
  value: A)

Параметры

  • value: A

reject

[Source]

Отклонить обещание.

be reject()

Публичные функции

next[B: Any #share]

[Source]

Присоединить обещание после текущего.

Когда это обещание выполняется, результат типа A передаётся в функцию выполнения, создавая промежуточный результат типа B. Затем это используется для выполнения следующего обещания в цепочке.

Если функция выполнения отсутствует или вызывает ошибку, то следующее обещание в цепочке будет отклонено.

Если это обещание отклонено, функция отклонения этого шага вызывается без входных данных, создавая промежуточный результат типа B, который используется для выполнения следующего обещания в цепочке.

Если функция отклонения отсутствует или вызывает ошибку, то следующее обещание в цепочке будет отклонено.

fun tag next[B: Any #share](
  fulfill: Fulfill[A, B] iso,
  rejected: Reject[B] iso = qualify)
: Promise[B] tag

Параметры

  • fulfill: Fulfill[A, B] iso
  • rejected: Reject[B] iso = qualify

Возвращает

  • Promise[B] tag

add[optional B: Any #share]

[Source]

Добавить два обещания в одно обещание, которое возвращает результат обоих, когда они выполнены. Если любое из обещаний отклонено, то новое обещание также отклоняется.

fun tag add[optional B: Any #share](
  p: Promise[B] tag)
: Promise[(A , B)] tag

Параметры

  • p: Promise[B] tag

Возвращает

  • Promise[(A , B)] tag

join

[Source]

Создаёт обещание, которое выполняется, когда выполняется получатель и все обещания в заданном итераторе. Если получатель или любое обещание в последовательности отклонены, то новое обещание также отклоняется.

Объединить 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

Параметры

  • ps: Iterator[Promise[A] tag] ref

Возвращает

  • Promise[Array[A] val] tag

select

[Source]

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

fun tag select(
  p: Promise[A] tag)
: Promise[(A , Promise[A] tag)] tag

Параметры

  • p: Promise[A] tag

Возвращает

  • Promise[(A , Promise[A] tag)] tag

timeout

[Source]

Отклонить обещание после истечения срока действия в наносекундах.

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API