-
Notifications
You must be signed in to change notification settings - Fork 76
Open
Description
c#调用js回调后,如果触发promise的resolve,promise的后续会晚一帧,如果c#在回调后清理数据,js promise拿到的就是错误数据。
有什么好的办法吗
//这部分是C#代码
class TestData{
public int value;
}
class TestClass{
private Action<TestData> _onDone;
void SetOnDone(Action<TestData> v){
_onDone = v;
//通过协程或者update 实现1s后调用WhenDone
}
void WhenDone(){
TestData data = MyPool.get<TestData>(); //从对象池获取一个TestData
data.value = 999; //设置想要的值
_onDone(data);
//归还给对象池
data.value = 0;
MyPool.despawn(data);
}
}//这部分是js代码
class JsClass {
getData() {
let testClass = new TestClass() // get TestClass
return new Promise((resolve, reject) => {
testClass.SetOnDone((ret) => {
resolve(ret)
})
})
}
async testData() {
let data = await this.getData()
// 下面这行 puerts-webgl下会输出0 ,puets v8版 会输出999
console.log("data.value:", data.value)
}
}
(new JsClass).testData()Metadata
Metadata
Assignees
Labels
No labels