关于多端开发中遇到的一点线程问题

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

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

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

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

 

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

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

  

原文地址:https://www.cnblogs.com/wenbodeboke/p/9684910.html

时间: 2024-07-31 14:12:14

关于多端开发中遇到的一点线程问题的相关文章

app端开发中,外部js是否需要下载到本地,到负载均衡

再一次app开发中,发现有引用的外部文件: 外部的文件不是应该下载到本地然后在引用这样不是更安全吗?(当时的心声)于是咨询了下经验丰富的同事: 引用外部的js文件时,优先使用非常快的CDN(Content Delivery Network 网络之上的内容分发网络,使客户端可以访问最近的边缘服务器,实现更快的加载,降低了网络阻塞,提高用户的访问响应速度). 假设,首次进入app index.html:index.js;css 等文件为1M ,需要加载的外部js等文件有6M.如果服务器的带宽很小,哪

VB.NET开发中遇到的一点小问题

在用vb.net开发的security support时,遇到一个问题,在trainingCourses.aspx页面上增加了一个HyperLink控件 <asp:HyperLink runat="server" ID="hlUSOnline" Text="Show Online Training Course" NavigateUrl="/secure/trainingCourses.aspx?c=en-US&o=Tru

移动端开发中的触摸事件和键盘操作

如何关闭iOS中键盘自动大写: 我们知道在iOS中,当虚拟键盘弹出时,默认情况下键盘是开启首字母大写的功能的,根据某些业务场景,可能我们需要关闭这个功能,移动版本webkit为 input元素提供了autocapitalize属性,通过指定autocapitalize=”off”来关闭键盘默认首字母大写. iOS中如何彻底禁止用户在新窗口打开页面 有时我们可能需要禁止用户在新窗口打开页面,我们可以使用a标签的target=”_self“来指定用户在新窗口打开,或者target属性保持空,但 是你

node服务端开发中express路由和http路由总结

express.router() // 第一引入express 并且创建express实例 var express = require('express')var router = express.Router(); // 第二部使用express路由方法: router.METHOD(PATH, HANDLER) router:express路由实例. METHOD:常见http请求[get, post, put, delefe, all] PATH: 路由地址 HANDLER(req, re

移动端开发注意事项

移动端开发中需要注意的事项,以及可能需要用到一些框架,尾部总结了一些主流框架,如果你觉得有用的话,请点击推荐,谢谢! 一.关于meta 常见的公共meta属性: 1.viewport <meta  name="viewport"  content="width-device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0"> width=device-

服务端开发之下载图片等文件

服务端开发中,当客户端需要加载服务端发送的图片文件时,需要服务端提供一个下载图片的程序. 下载图片工具类的代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; public class DownloadImageUtil { public stat

Android 开发中三种多线程

在开发工程中线程可以帮助我们提高运行速度,Android开发中我知道的线程有四个一个是老生长谈的Thread,第二个是asyncTask,第三个:TimetTask,第四个是Looper,四个多线程各有个的有点,Thread的运行速度是最快的,AsyncTask的规范性是最棒的,其它两个也有自己的优点. 1.Thread与Handler组合,比较常见 Handler主要是帮助我们来时时更新UI线程 这里在后天加载100张图片,然后没加载完成一个用handler 返回给UI线程一张图片并显示 最后

ios开发中 线程、进程即多线程简单介绍

本文转自:原文http://www.cnblogs.com/wendingding/p/3805088.html 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"