neeboo
neeboo
> 请问具体是哪个finalizer,win上面是正常的,mac上不行,JS_ExecutePendingJob是有调用的 **有关不能eval:** 我使用官方09-06更新的版本无论如何都不能正常eval. https://github.com/abner/flutter_js/tree/master/android/src/main/c/quickjs 这个库里面的quickjs版本,用它的可以正常eval,后来我对比了diff之后,发现新版缺少了c_function_finalizer 目前没有调查具体这个flutter_js的库使用的是哪个版本的源码 为了顺利开发,我就把它的源码搬过来,没有具体的研究原理。 **有关macOS** 目前我还没有打算编译过macOS的版本,不清楚跟iOS的差异具体有多大,promise不能调用then,从quickjs的行为上看,应该是JS_ExecutePendingJob没有执行或者执行有问题,或者你可以打个log看看。 另外,因为是异步调用,这里quickjs并没有把队列的api拿出来,也许需要单独做一个promise队列。 从你的tree上看,跟我使用的addCallback的方式不太一样(场景可能不同),我做的是添加一个promise的deffer对象到global,然后再resolve,你可以参考试试看
> 感谢,我试出来了,Release有问题,改成Debug就好了,应该是什么优化导致的。 > 另外qjs原版是 [https://github.com/bellard/quickjs,在macos上我能eval,ios我还没试。](https://github.com/bellard/quickjs%EF%BC%8C%E5%9C%A8macos%E4%B8%8A%E6%88%91%E8%83%BDeval%EF%BC%8Cios%E6%88%91%E8%BF%98%E6%B2%A1%E8%AF%95%E3%80%82) 试好了请引用一下你的issue在这里 我去看看
> ios我试了没有发现问题,issue懒得开了,commit到ffi分支了。 > > eval的是和我自己的需求比较相关,我给所有返回值包了一个`Promise.resolve`,方便在dart统一处理js里的异步方法(qjs没有提供直接的方法判断是否是promise),我没找到您代码中对应的方法,至于生成Promise可以直接用[JS_NewPromiseCapability](https://github.com/ekibun/flutter_qjs/blob/7a48fac5701f7676282767905935f3f9394fb9fb/lib/wrapper.dart#L113) > 我在JSEngine里面做的实现,不过是直接eval的promise deffer,后面会改成ffi的api,这里就不展开了 > 还有最后两个问题,make.sh能不能写在podspec里,以及怎么判断是否是simulator(和实机有不同的abi?),我完全不会用mac,虚拟机好卡。。。(注释里标了IOSTODO的是需要在实机和simulator中改的地方) make.sh用在podpec我没有试过,你可以尝试,判断是否simulator好像是没有的,确实有不同的abi,但无法在工程代码中判断,智能在编译之前提供。由于ios14的simulator采用的是arm64架构,与之前i386不同,这里跟实机有了冲突,google了一圈有一些方案,但暂时还没有想好编译脚本怎么简要的去实现,回头再看吧。
> 我遇到了和你相似的问题,Android实机上eval会随机失效,排查原因出在js_get_stack_pointer函数上,猜测是由于dart ffi所处的函数栈不确定导致返回的值与初始化时的stack_top相差超过了设置的stack_size,使得eval返回错误。 > > 我做了一个比较trick的修改,在eval之前把stack_top重置,参见: > [ekibun/flutter_qjs@ee93418](https://github.com/ekibun/flutter_qjs/commit/ee934184ac48e40b9fae39e6ff0dade602fd3360) > > 你可以试试在源码注释掉CONFIG_STACK_CHECK看看是否是相似的问题。 感谢你发现的问题,目前我还没有出现随机失败问题,请让我多测试一下你的方案。
> > Seems that the eval function does not work after JSEngine is initialized. Still don't know why, but we can work around by providing global eval function when engine...
api.s1.hmny.io use fromShard=1. change param or change url to s0
Should we draw a diagram/graph or explain general implementation? There are a lot of things here: 1. Users/Owner Role-based management 2. Proxy/Delegate Call from canister 3. Data setter/getter 4. Function/method...