JS如何传递给C回调函数
时间: 2023-06-30 09:26:59 浏览: 129
在JS中向C传递回调函数,需要借助于emscripten这个工具。具体步骤如下:
1. 在C中定义一个函数指针类型,用于接收JS传递过来的回调函数。
```c
typedef void (*callback_func)(int result);
```
2. 在C中定义一个函数,用于接收JS传递过来的回调函数,并保存下来。
```c
callback_func my_callback = NULL;
void set_callback(callback_func callback) {
my_callback = callback;
}
```
3. 在JS中使用Module.ccall()方法调用C函数,并传递回调函数。
```javascript
Module.ccall('set_callback', 'void', ['function', 'number'], [function(result) {
console.log('result:', result);
}, 123]);
```
在上面的代码中,第一个参数是C函数的名字,第二个参数是C函数的返回值类型,第三个参数是一个数组,用于传递参数。第一个参数是一个JS函数,用于接收C函数的回调结果;第二个参数是一个常量,用于传递一个整数参数。
4. 在C函数中调用回调函数。
```c
if (my_callback != NULL) {
my_callback(456);
}
```
在上面的代码中,判断一下回调函数是否为空,如果不为空,则调用回调函数,并传递一个整数参数。
总结一下,JS向C传递回调函数的过程可以分为四步:定义函数指针类型、定义接收回调函数的函数、在JS中调用C函数并传递回调函数、在C函数中调用回调函数。