Class: QuickJSDeferredPromise
February 16, 2026 ยท View on GitHub
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
promiseHandle
rejectHandle
resolveHandle
Returns
QuickJSDeferredPromise
Overrides
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
Overrides
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
Inherited from
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
Overrides
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?
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?
Returns
void