Skip to content

Latest commit

 

History

History
253 lines (144 loc) · 7.88 KB

QuickJSDeferredPromise.md

File metadata and controls

253 lines (144 loc) · 7.88 KB

quickjs-emscriptenquickjs-emscriptenReadme | Exports


quickjs-emscripten / quickjs-emscripten / QuickJSDeferredPromise

Class: QuickJSDeferredPromise

QuickJSDeferredPromise wraps a QuickJS promise handle and allows resolveing or rejecting that promise. Use it to bridge asynchronous code on the host to APIs inside a QuickJSContext.

Managing the lifetime of promises is tricky. There are three QuickJSHandles inside of each deferred promise object: (1) the promise itself, (2) the resolve callback, and (3) the reject callback.

  • If the promise will be fulfilled before the end of it's owner's lifetime, the only cleanup necessary is deferred.handle.dispose(), because calling resolve or reject will dispose of both callbacks automatically.

  • As the return value of a VmFunctionImplementation, return handle, and ensure that either resolve or reject will be called. No other clean-up is necessary.

  • In other cases, call dispose, which will dispose handle as well as the QuickJS handles that back resolve and reject. For this object, dispose is idempotent.

Contents

Extends

Implements

Constructors

new QuickJSDeferredPromise(args)

new QuickJSDeferredPromise(args): QuickJSDeferredPromise

Use QuickJSContext#newPromise to create a new promise instead of calling this constructor directly.

Parameters

args: Object

args.context: QuickJSContext

args.promiseHandle: QuickJSHandle

args.rejectHandle: QuickJSHandle

args.resolveHandle: QuickJSHandle

Returns

QuickJSDeferredPromise

Overrides

quickjs-emscripten.UsingDisposable.constructor

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:95

Properties

context

context: QuickJSContext

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:73


handle

handle: QuickJSHandle

A handle of the Promise instance inside the QuickJSContext. You must dispose handle or the entire QuickJSDeferredPromise once you are finished with it.

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:80


owner

owner: QuickJSRuntime

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:72


settled

settled: Promise<void>

A native promise that will resolve once this deferred is settled.

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:85

Accessors

alive

get alive(): boolean

Returns

boolean

true if the object is alive

false after the object has been disposed

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:166

Methods

[dispose]()

[dispose](): void

Just calls the standard .dispose() method of this class.

Returns

void

Implementation of

quickjs-emscripten.Disposable.[dispose]

Inherited from

quickjs-emscripten.UsingDisposable.[dispose]

Source

packages/quickjs-emscripten-core/src/lifetime.ts:47


dispose()

dispose(): void

Dispose of the underlying resources used by this object.

Returns

void

Implementation of

quickjs-emscripten.Disposable.dispose

Overrides

quickjs-emscripten.UsingDisposable.dispose

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:170


reject()

reject(value?): void

Reject handle with the given value, if any. Calling this method after calling dispose is a no-op.

Note that after rejecting a promise, you may need to call QuickJSRuntime#executePendingJobs to propagate the result to the promise's callbacks.

Parameters

value?: QuickJSHandle

Returns

void

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:147


resolve()

resolve(value?): void

Resolve handle with the given value, if any. Calling this method after calling dispose is a no-op.

Note that after resolving a promise, you may need to call QuickJSRuntime#executePendingJobs to propagate the result to the promise's callbacks.

Parameters

value?: QuickJSHandle

Returns

void

Source

packages/quickjs-emscripten-core/src/deferred-promise.ts:120


Generated using typedoc-plugin-markdown and TypeDoc