Class: QuickJSDeferredPromise

February 16, 2026 ยท View on GitHub

quickjs-emscripten


quickjs-emscripten / quickjs-emscripten-core / QuickJSDeferredPromise

Class: QuickJSDeferredPromise

Defined in: packages/quickjs-emscripten-core/src/deferred-promise.ts:71

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

Constructor

new QuickJSDeferredPromise(args): QuickJSDeferredPromise

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

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

Parameters

args
context

QuickJSContext

promiseHandle

QuickJSHandle

rejectHandle

QuickJSHandle

resolveHandle

QuickJSHandle

Returns

QuickJSDeferredPromise

Overrides

UsingDisposable.constructor

Properties

context

context: QuickJSContext

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


handle

handle: QuickJSHandle

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

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


owner

owner: QuickJSRuntime

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


settled

settled: Promise<void>

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

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

Accessors

alive

Get Signature

get alive(): boolean

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

Returns

boolean

true if the object is alive

Implementation of

Disposable.alive

Overrides

UsingDisposable.alive

Methods

[dispose]()

[dispose](): void

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

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

Returns

void

Implementation of

Disposable.[dispose]

Inherited from

UsingDisposable.[dispose]


dispose()

dispose(): void

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

Dispose of the underlying resources used by this object.

Returns

void

Implementation of

Disposable.dispose

Overrides

UsingDisposable.dispose


reject()

reject(value?): void

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

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


resolve()

resolve(value?): void

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

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