程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么在android中调用本机模块后js事件循环冻结(react-native)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么在Android中调用本机模块后js事件循环冻结(react-native)?

开发过程中遇到为什么在Android中调用本机模块后js事件循环冻结(react-native)的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么在Android中调用本机模块后js事件循环冻结(react-native)的解决方法建议,希望对你解决为什么在Android中调用本机模块后js事件循环冻结(react-native)有所启发或帮助; @H_874_2@我有这个代码(这里只是伪代码):

@H_874_2@JavaSDK.java

renderUI();
emmitReactNativeEvent();
@H_874_2@ReactNative.ts

const sleep = (time: number) => {
  return new Promise((resolvE) => setTimeout(resolve,timE))
}

emmiter.on('react-native-event',() => {
  console.log('InsIDe-Before');
  sleep(1000);
  console.log('InsIDe-After');
  JavaSDK.finish();
}

JavaSDK.init();
@H_874_2@当我执行 ReactNative.ts 脚本时,我观察到了奇怪的行为。

@H_874_2@执行是这样的

  • 创建事件监听器
  • 调用本机库,该库将显示本机 UI(不仅仅是组件,而是整个屏幕)
  • 当本机代码正在执行时,它会发出事件
  • RN 中的回调将在来自 JavaSDK 的 UI 后面的后台执行
  • 回调完成后调用JavaSDK方法关闭原生UI
@H_874_2@现在的问题是 setTimeout()seTinterval() 似乎根本不起作用。回调在打印 InsIDe-Before 时被调用,但随后卡在 sleep() 上并且永远不会完成......

@H_874_2@我还尝试将 seTinterval() 与一些控制台日志一起使用并在运行 JavaSDK 之前调用它...一旦 SDK 被初始化,控制台日志就会停止打印 - 似乎 seTinterval() 已暂停...但是在 JavaSDK 完成后,控制台日志恢复...

@H_874_2@知道发生了什么吗?我该如何解决。我希望能够在我的回调中使用 setTimeout

解决方法

@H_874_2@暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

@H_874_2@如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

@H_874_2@小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的为什么在android中调用本机模块后js事件循环冻结(react-native)全部内容,希望文章能够帮你解决为什么在android中调用本机模块后js事件循环冻结(react-native)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: