关于在c++中回调js方法的问题

c++导出如下接口给js

如:
call_cpp(cmd:string,cb:(bool)=>void);

调用的时候 call_capp(“test”, (result)=>{console.log(result)});

在cpp中类似这样
bool call_cpp(se::State& state){
  se::Value jsFunc; = state.args()[1];
  // 这里有个线程,去干某些事,结束后再通过schedule来回调jsFunc
  auto func = [jsFunc]()->void{
    jsFunc.toObject()->call(xxx);  // 这样是可以成功的。
  };

  但是假如我构建一个类,把jsFunc放到这个类里面,
  auto func = [myclass)()->void{
      myclass.jsFunc.toObject()->call(xxx);
  };
  这样就不行,myclass和jsfunc都还存在,但调用时提示Function object is released.
  必须单独把myclass.jsFunc放到捕获列表里才行
 return true;
}

我也试过root() 或者直接把 obj.toObject() 这个东西放到myclass里,面不是直接放se::Value 同样不行。

这个js里的方法在c++里生命周期到底是怎么样的?

放类里面你得先把object持有下引用否则你相当于保存的是一个局部变量的指针

1赞