跨语言调用
JavaScript调用Rust
-
声明Rust函数
同步函数
#[deft_macros::js_func]pub fn hello(message: String) -> String {println("value from js: ", message);"Hi, I am Rust".to_string()}异步函数
#[deft_macros::js_func]pub async fn hello_async(message: String) -> String {println("value from js: ", message);"Hi, I am Rust".to_string()} -
向JavaScript引擎注册Rust函数
impl IApp for YourApp {fn init_js_engine(&mut self, js_engine: &mut JsEngine) {js_engine.add_global_func(hello::new());js_engine.add_global_func(hello_async::new());}...} -
JavaScript调用
// 调用同步函数const value = hello("Hello, I am JavaScript");console.log('value from rust', value);// 调用异步函数const value = await hello_async("Hello, I am JavaScript");console.log('value from rust', value);
Rust调用JavaScript
Rust全局执行JavaScript代码
let mut js_engine = JsEngine::get();js_engine.eval_module("console.log(111)", "test.js");
Rust回调JavaScript函数
JavaScript调用Rust的时候,可以把JavaScript函数作为参数传递给Rust, 此时,Rust便可以使用call_as_function
回调JavaScript.
#[deft_macros::js_func]pub fn my_rust_fn(callback: JsValue) { // callback为JavaScript传递过来的一个function对象 // 执行JavaScript回调 callback.call_as_function(vec![JsValue::Bool(true)]);}