
lib.Js
mergeInto(libraryManager.library,{ compute_Js: function(input,out_buf) { do_promise_computation( input ).then(function(result){ Module.print("Promise Returned fully"); for (var i = 0; i < 8; i++) { var num = result[i] {{{makeSetValue('out_buf+(i*4)','num','i32')}}} } });} program.c
#include <stdio.h>#include <stdint.h>#include <emscripten.h>extern voID compute_Js(int32_t,int64_t*);int main() { int32_t input = 1234; int64_t out_buf[4]; int64_t* out_ptr = (int64_t*)(&out_buf); printf("Calling JavaScript\n"); compute_Js(input,out_ptr); printf("%lld\n",out_buf[0]); printf("%lld\n",out_buf[1]);} 在没有Promise的其他函数中,我已经为库编写了,我已经能够成功地将数据写入C代码给出的缓冲区,但这次输出如下:
Calling JavaScript00Promise Returned fully
但我希望能够等待Promise的结果然后将其写入C代码,以便Promise返回完全位于C代码中的printf语句之后,这些语句是在JavaScript调用之后.有没有办法用emscripten做到这一点?
解决方法 使用ASYNCIFY_FUNCTIONS和_emscripten_async_resume.https://kripken.github.io/emscripten-site/docs/porting/asyncify.html
总结以上是内存溢出为你收集整理的来自C代码的异步javascript库调用完成得太晚了全部内容,希望文章能够帮你解决来自C代码的异步javascript库调用完成得太晚了所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)