使用Emscripten在C代码中进行javascript函数回调

时间:2015-08-05 10:33:35

标签: javascript c callback emscripten

任务是调用javascript函数作为回调,以显示while循环操作的进度。 例如。 JS:

var my_js_fn = function(curstate, maxstate){//int variables
console.log(curstate.toString() + " of " + maxstate.toString());
}

C伪代码:

int smth_that_calls_my_fn(int i, int max) {
/*
the_magic to call my_js_fn()
*/
}
    int main(){
    //....
        while (i < max){
        smth_that_calls_my_fn(i,max);
        }
    //....
    return 0;
    }

如何关联smth_that_calls_my_fnmy_js_fn

1 个答案:

答案 0 :(得分:3)

您正在寻找的魔力非常简单 - 您需要使用EM_ASM_ARGS宏。

具体来说,它看起来像

int smth_that_calls_my_fn(int i, int max) {
  EM_ASM_ARGS({ my_js_fn($0, $1); }, i, max);
}

确保您在C文件中#include <emscripten.h>以便此宏存在。

EM_ASM_ARGS宏将JavaScript代码(在大括号中)作为第一个参数,然后是您要传入的任何其他参数。在JS代码中,$ 0是第一个要遵循的参数,$ 1是下一个参数,依此类推。< / p>

如果您想了解更多信息,我只是写了一篇博客文章,详细介绍了这个主题:http://devosoft.org/an-introduction-to-web-development-with-emscripten/