Spec-Zone.ru › Nim

std/asyncfutures

ИсточникРедактировать

Импорты

os, tables, strutils, times, heapqueue, options, deques, cstrutils, typetraits, stacktraces

Типы

Future[T] = ref object of FutureBase
  ## Stored value
Типизированное будущее. Источник Редактировать
FutureBase = ref object of RootObj
  error*: ref Exception      ## Stored exception
  errorStackTrace*: string
  when not defined(release) or defined(futureLogging):
    ## For debugging purposes only.
Нетипизированное будущее. Источник Редактировать
FutureError = object of Defect
  cause*: FutureBase
Источник Редактировать
FutureVar[T] = distinct Future[T]
Источник Редактировать

Константы

isFutureLoggingEnabled = false
Источник Редактировать
NimAsyncContinueSuffix = "NimAsyncContinue"
Для внутреннего использования. Не использовать. Источник Редактировать

Процедуры

proc `$`(stackTraceEntries: seq[StackTraceEntry]): string {.
    ...raises: [ValueError], tags: [], forbids: [].}
Источник Изменить
proc addCallback(future: FutureBase; cb: proc () {.closure, ...gcsafe.}) {.
    ...raises: [Exception], tags: [RootEffect], forbids: [].}

Добавляет процедуру обратного вызова, которая будет вызвана по завершении будущего.

Если будущее уже завершено, то cb будет вызвана немедленно.

Источник Изменить
proc addCallback[T](future: Future[T];
                    cb: proc (future: Future[T]) {.closure, ...gcsafe.})

Добавляет процедуру обратного вызова, которая будет вызвана по завершении будущего.

Если будущее уже завершено, то cb будет вызвана немедленно.

Источник Изменить
proc all[T](futs: varargs[Future[T]]): auto

Возвращает будущее, которое завершится после завершения всех будущих в futs. Если аргумент пуст, возвращаемое будущее завершается немедленно.

Если ожидаемые будущие не Future[void], возвращаемое будущее будет содержать значения всех ожидаемых будущих в последовательности.

Если ожидаемые будущие являются Future[void], эта процедура возвращает Future[void].

Источник Изменить
proc `and`[T, Y](fut1: Future[T]; fut2: Future[Y]): Future[void]
Возвращает будущее, которое завершится после завершения как fut1, так и fut2. Источник Изменить
proc asyncCheck[T](future: Future[T])

Устанавливает обратный вызов на future, который вызывает исключение, если будущее завершилось с ошибкой.

Это следует использовать вместо discard, чтобы игнорировать будущие без возвращаемого значения, или использовать waitFor, если необходимо дождаться завершения будущего.

Источник Изменить
proc callback=(future: FutureBase; cb: proc () {.closure, ...gcsafe.}) {.
    ...raises: [Exception], tags: [RootEffect], forbids: [].}

Очищает список обратных вызовов и устанавливает процедуру обратного вызова, которая будет вызвана по завершении будущего.

Если будущее уже завершено, то cb будет вызвана немедленно.

Рекомендуется использовать addCallback или then вместо этого.

Источник Изменить
proc callback=[T](future: Future[T];
                  cb: proc (future: Future[T]) {.closure, ...gcsafe.})

Устанавливает процедуру обратного вызова, которая будет вызвана по завершении будущего.

Если будущее уже завершено, то cb будет вызвана немедленно.

Источник Изменить
proc callSoon(cbproc: proc () {....gcsafe.}) {....raises: [Exception],
    tags: [RootEffect], forbids: [].}

Вызвать cbproc "скоро".

Если асинхронный диспетчер работает, cbproc будет выполнен во время следующего такта диспетчера.

Если асинхронный диспетчер не работает, cbproc будет выполнен немедленно.

Источник Изменить
proc clean[T](future: FutureVar[T])
Сбрасывает статус finished future. Источник Изменить
proc clearCallbacks(future: FutureBase) {....raises: [], tags: [], forbids: [].}
Источник Изменить
proc complete(future: Future[void]; val = Future[void].default) {.
    ...raises: [Exception], tags: [RootEffect], forbids: [].}
Источник Изменить
proc complete[T](future: Future[T]; val: sink T)
Завершает future со значением val. Источник Изменить
proc complete[T](future: FutureVar[T])
Завершает FutureVar. Источник Изменить
proc complete[T](future: FutureVar[T]; val: sink T)

Завершает FutureVar со значением val.

Любое ранее сохраненное значение будет перезаписано.

Источник Изменить
proc fail[T](future: Future[T]; error: ref Exception)
Завершает future с error. Источник Изменить
proc failed(future: FutureBase): bool {....raises: [], tags: [], forbids: [].}
Определяет, завершилось ли future с ошибкой. Источник Изменить
proc finished(future: FutureBase | FutureVar): bool

Определяет, завершилось ли future.

True может указывать на ошибку или значение. Используйте failed, чтобы отличить.

Источник Изменить
proc getCallSoonProc(): (proc (cbproc: proc ()) {....gcsafe.}) {....raises: [],
    tags: [], forbids: [].}
Получить текущую реализацию callSoon. Источник Изменить
proc mget[T](future: FutureVar[T]): var T

Возвращает изменяемое значение, хранящееся в future.

В отличие от read, эта функция не будет вызывать исключение, если Future не был завершен.

Источник Изменить
proc newFuture[T](fromProc: string = "unspecified"): owned(Future[T])

Создает новое будущее.

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

Источник Изменить
proc newFutureVar[T](fromProc = "unspecified"): owned(FutureVar[T])

Создает новый FutureVar. Этот тип Future идеально подходит для ситуаций, когда вы хотите избежать ненужных выделений Futures.

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

Источник Изменить
proc `or`[T, Y](fut1: Future[T]; fut2: Future[Y]): Future[void]
Возвращает будущее, которое завершится после завершения либо fut1, либо fut2. Источник Изменить
proc read(future: Future[void] | FutureVar[void])
Источник Изменить
proc read[T](future: Future[T] | FutureVar[T]): lent T

Возвращает значение future. Будущее должно быть завершено, иначе эта функция завершится с исключением ValueError.

Если результат будущего — ошибка, то будет выброшено это исключение.

Источник Изменить
proc readError[T](future: Future[T]): ref Exception

Возвращает исключение, сохранённое в future.

Исключение ValueError будет выброшено, если в указанном Будущем нет исключения.

Источник Изменить
proc setCallSoonProc(p: (proc (cbproc: proc ()) {....gcsafe.})) {....raises: [],
    tags: [], forbids: [].}
Изменяет текущую реализацию callSoon. Обычно вызывается при инициализации диспетчера из asyncdispatcher. Источник Изменить

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/asyncfutures.html

Spec-Zone.ru

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