quickjs-emscripten • quickjs-emscripten • Readme | Exports
quickjs-emscripten / quickjs-emscripten / 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.
new QuickJSDeferredPromise(
args
):QuickJSDeferredPromise
Use QuickJSContext#newPromise to create a new promise instead of calling this constructor directly.
• args: Object
• args.context: QuickJSContext
• args.promiseHandle: QuickJSHandle
• args.rejectHandle: QuickJSHandle
• args.resolveHandle: QuickJSHandle
quickjs-emscripten.UsingDisposable.constructor
packages/quickjs-emscripten-core/src/deferred-promise.ts:95
context:
QuickJSContext
packages/quickjs-emscripten-core/src/deferred-promise.ts:73
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.
packages/quickjs-emscripten-core/src/deferred-promise.ts:80
owner:
QuickJSRuntime
packages/quickjs-emscripten-core/src/deferred-promise.ts:72
settled:
Promise
<void
>
A native promise that will resolve once this deferred is settled.
packages/quickjs-emscripten-core/src/deferred-promise.ts:85
get
alive():boolean
boolean
true if the object is alive
false after the object has been disposed
packages/quickjs-emscripten-core/src/deferred-promise.ts:166
[dispose]():
void
Just calls the standard .dispose() method of this class.
void
quickjs-emscripten.Disposable.[dispose]
quickjs-emscripten.UsingDisposable.[dispose]
packages/quickjs-emscripten-core/src/lifetime.ts:47
dispose():
void
Dispose of the underlying resources used by this object.
void
quickjs-emscripten.Disposable.dispose
quickjs-emscripten.UsingDisposable.dispose
packages/quickjs-emscripten-core/src/deferred-promise.ts:170
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.
• value?: QuickJSHandle
void
packages/quickjs-emscripten-core/src/deferred-promise.ts:147
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.
• value?: QuickJSHandle
void
packages/quickjs-emscripten-core/src/deferred-promise.ts:120
Generated using typedoc-plugin-markdown and TypeDoc