NativeEventEmitter回调中的setTimeout块执行代码块



我正在尝试向本机端(android(发送一个延迟的字符串。但是setTimeout正在阻止执行。你能解释一下发生了什么事吗?

const eventEmitter = new NativeEventEmitter(Module);
const  waitFor = (delay) {   return new Promise((resolve) => setTimeout(resolve, delay)); }
const onFrameUpdate = async (e: string) => {
// Ignore onFrameUpdate stream
if (isPaused) {
console.log('Js on Pause');
return;
}
isPaused = true;
console.log('Js working');
if (e.hasOwnProperty('frameIndex')) {
await Module.setLabelText(`Hello`) ; // -> this is set text on native side in UI
await waitFor(1000);  //  remove this line and everything will be working fine, but I need a delay.
await Module.setLabelText(`hello2`); // this text will never 
isPaused = false;
}
};
const onFrameUpdateSubscription = eventEmitter.addListener(  'onFrameUpdate',  onFrameUpdate );

InReact Native setTimeout((永远不会在后台工作。它将在react原生ui再次变为前台后立即执行。

我在objC和java端手动实现了后台定时器setTimeout,现在它可以正常工作了。

最新更新