Spec-Zone.ru › Nim
std/asyncfutures Источник Редактировать Импорты os , tables , strutils , times , heapqueue , options , deques , cstrutils , typetraits , stacktraces Типы FutureBase = ref object of RootObj
error*: ref Exception ## Stored exception
errorStackTrace*: string
when not defined(release) or defined(futureLogging):
## For debugging purposes only. Нетипизированное будущее. Источник Редактировать Константы 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]; 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[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 . Источник Изменить