Comments (3)
from quickjs-emscripten.
@justjake
i think so , but the promise create in the vm , use in the vm , and resolve in the vm , where can i call the executePendingJobs ?
from quickjs-emscripten.
i find a JS_BOOL JS_IsJobPending(JSRuntime *rt);
function from quickjs.h
https://github.com/bellard/quickjs/blob/2788d71e823b522b178db3b3660ce93689534e6d/quickjs.h#L874
/* JS Job support */
typedef JSValue JSJobFunc(JSContext *ctx, int argc, JSValueConst *argv);
int JS_EnqueueJob(JSContext *ctx, JSJobFunc *job_func, int argc, JSValueConst *argv);
JS_BOOL JS_IsJobPending(JSRuntime *rt);
int JS_ExecutePendingJob(JSRuntime *rt, JSContext **pctx);
the JS_IsJobPending
seems like usefull .
and after i look up the document, i find some thing :
executependingjobs()
haspendingjob()
and from the evalcode() comment :
If evaluation returned a handle containing a promise, use resolvePromise to convert it to a native promise and executePendingJobs to finish evaluating the promise.
so, i add vm.runtime.executePendingJobs()
call between the vm.resolvePromise
and await
like follow, the above code work !
console.log('resolvedResult');
const resolvedResultPromise = vm.resolvePromise(promiseHandle);
// add this
console.log('vm.runtime.hasPendingJob()', vm.runtime.hasPendingJob()); // <============ return true
console.log('vm.runtime.executePendingJobs()', vm.unwrapResult(vm.runtime.executePendingJobs()));
console.log('vm.runtime.hasPendingJob()', vm.runtime.hasPendingJob()); // <============ return false
console.log('resolvedResultPromise', resolvedResultPromise); // <============ pending on this
const resolvedResult = await resolvedResultPromise;
seems like the document in Readme.md need some update
from quickjs-emscripten.
Related Issues (20)
- Evaluating a module (any code that uses import) always returns undefined HOT 6
- Module "fs", "path", and "crypto" have been externalized for browser compatibility HOT 2
- Tests fail on s390x machines HOT 5
- Proxy log receiver blocking error HOT 1
- Async Regression "TypeError: Object not disposable" in v0.26.0 HOT 4
- wish to add a new api (QuickJSHandle.keepAlive) HOT 2
- `getQuickJS()` callback never resolves? HOT 3
- [vite - MIME type Error]It's cannot work in vite HOT 2
- How to access wasm module's Memory? HOT 3
- Feature request: Expose GetModuleExport APIs HOT 4
- Timeout not working HOT 6
- [feature request] Upgrade to v2024-01-13 HOT 3
- TypeError: Failed to construct 'URL': Invalid URL HOT 7
- Loading WasmMemory into module HOT 11
- Determinism of the library HOT 2
- Distributed packages have no license HOT 2
- `evalCode` won't return error in ES module mode HOT 3
- Can't run cloudflare example HOT 1
- `Out of bounds memory access` Error only on ARM Safari HOT 10
- Having troubles with ArrayBuffer HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quickjs-emscripten.