小编Far*_*ala的帖子

来自 C 代码的异步 JavaScript 库调用完成得太晚了

我正在使用 emscripten 编译一个 C 程序,该程序使用我编写的 JavaScript 库,并将它们与--js-library标志链接在一起。我的 C 代码调用库中的一个函数,其中有一个函数Promise,在回调中我希望它将给定的结果写入一些内存,该内存已从 C 调用者传递到 JS 函数中。这是一个例子(catch为了简洁,我省略了 Promise的错误捕获部分):

库.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)', 0, 'num', 'i32')}}}
       }
  });
}
Run Code Online (Sandbox Code Playgroud)

程序.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"); …
Run Code Online (Sandbox Code Playgroud)

javascript c asynchronous promise emscripten

7
推荐指数
1
解决办法
880
查看次数

标签 统计

asynchronous ×1

c ×1

emscripten ×1

javascript ×1

promise ×1