autojs时间同步

JavaScript016

autojs时间同步,第1张

牙叔教程 简单易学

8.7.7-0

手机和服务器时间尽可能一致

手机一般默认设置 使用网络提供的时间

这个时间和服务器的时间一定是有误差的

我们还要把这个误差考虑进去

那么, 这个误差怎么算呢

当手机向服务器查询一次当前时间,

会产生一个手机时刻A

服务器会返回一个服务器时间

服务器时间 - 网络从手机到服务器的时长 = 手机时刻B(以服务器为标准)

手机时间误差 = 手机时刻B - 手机时刻A

用脚本引擎启动一个单独的脚本, 每隔一定时间, 去校正一下两个值, 并且用本地存储存起来

每当要获取服务器的时间, 我们就可以读取本地存储, 直接用公式计算出服务器的时间, 而不用去请求服务器

部分内容来自网络

同步执行意味着单线程执行,也就是说你js内部运算执行和你的页面渲染是同一个线程。

如果长时间同步执行一系列js运算,那么你的页面渲染就要等待你这一段同步代码执行完毕才能继续进行页面渲染,而且,DOM更新(页面渲染)是比较消耗性能的

看这代码和你的意思,3秒切换一张图片,循环切换,当点击小图片时,是想立刻显示当前点击的图片。实现思路:对下面的小图片添加点击事件,在循环执行切换时要判断。伪代码如下:

function update(index){

    //在这块写changeimg方法的代码,作用只是显示index这张图片

}

//定义变量

var current = 1;//当前显示的图片

var isRun = true //是否进行切换图片,此变量是为点击小图片显示而准备

//循环执行,切换图片

function showImage(){

    setTimeout(showImage, 3000)

    if(isRun){

        update(index++)

    }

}

//小图片添加点击事件,逐个添加事件

img.addEventListener("click", doClick(i), false)

img.addEventListener("mouseout", continueLoop, false)

//以上为示例,其他自行添加,i为小图片的顺序号,也就是需要显示图片的名称

//

function doClick(i){

    isRun = false

    index = i

    update(index)

}

//

function continueLoop(){

    isRun = true

}

//最后,初始化完毕,调用循环方法

showImage()

大意就这样,当鼠标离开,继续循环,点击停止循环,注意事件添加。以上代码不保证完全正确,一般不用纯js开发,所以不是很熟,见谅!