zoukankan      html  css  js  c++  java
  • 关于多端开发中遇到的一点线程问题

     在开发中我们会遇到很多不可思议的问题!可能前端对于线程理解的不是很深入,我先给大家讲一下什么是线程。

     线程是进程内执行代码基本单位,那么进程是什么呢?指程序被OS调入内存,分配执行空间,随时供CPU调度执行,也就是我们电脑所开启的很多进程,这样是不是更清楚了呢?(这里就不深入讲了,以后有机会给大家讲解一下线程与进程的关系,其实我们前端webworker也是html5,新加线程的一个方法。可以了解一下)

     最近我们开发一个签到打卡功能,我们是基于一个底层框架,安卓,ios、前端和后端联调(下面称ios和安卓为客户端)都基于这个框架开发,流程是这样的,如果用户点击打卡我要调起客户端插件,获取地理定位信息,然后我拿到这个地理位置信息给后台对比是不是在打卡范围内,如果在范围则成功反之不成功。

      流程缕清了吧?写起来特别好写,请看下面代码片段:(其中我们还有判断是不是多个班次跳转页面的流程,这里就不多说了,我们只说这个遇到的问题)

     

        上面代码我红框圈起来的地方就是我调用客户端插件的方法,下面蓝框我做了一个延时,大家是不是觉得很奇怪?我为什么要做延时呢?起初我没有加这个延时,直接调用方法,方法就不生效,甚至走都没有走进去!!,我查了很久,就是不知道怎么回事,因为这也不存在赋值传参的问题啊,就算有赋值问题也应该先这个方法在报错啊?然后就加了一个延时,结果好使了,之后就问了我们技术总监,技术总监说,可能是调用了客户端插件之后,底层框架新开了一个线程,我的方法kq_qdbtns在主线程,然后用setTimeout回归主线程,从而调用到kq_qdbtns的这个方法。

    如有不足之处请大家指出,谢谢。

      

  • 相关阅读:
    总结:使用pll来进行“异步复位,同步释放”
    总结“异步复位,同步释放”
    用quartusII再带的modelsim进行后仿真(时序仿真)的操作步骤
    Notepad++新建文件默认保存格式修改问题
    英语翻译正确的思维
    浅谈web网站架构演变过程
    MVC-API(二)
    C#面向对象编程的基础
    C# 堆栈讲解
    AutoCAD 2013 之R14版本下载地址整理汇总
  • 原文地址:https://www.cnblogs.com/wenbodeboke/p/9684910.html
Copyright © 2011-2022 走看看