js睡眠

来源:互联网 发布:灰鸽子官网数据 编辑:程序博客网 时间:2024/04/28 22:05

java

前言

在java里,有睡眠方法(即sleep)。


应用场景

用于线程睡眠。


js

前言

在js里,没有睡眠方法,只有延迟执行一个函数或一段代码。


应用场景

应用场景是,如果某个操作有回调函数(比如,监听器啥的。),而且这个操作(假如是查询数据)费时很长,那么回调函数就一直没有执行——但是呢,该操作的后面的代码又是基于回调函数的,需要用到回调函数里的数据。


需要特别注意的是,凡是某个操作有回调函数,那么这个时候js代码相当于是异步执行的,异步执行的好处是后面的代码不需要等待前面的代码执行完毕就可以同时执行,但是坏处是如果后面的代码基于前面的代码(即回调函数)的数据,那么这个时候后面的代码就需要延迟执行。


具体如何使用

按是否需要传递参数,分2种,

1、不需要传递参数

setTimeout(函数名或者"函数名",毫秒数);

2、需要传递参数

一、参数是字符串

示例

// 添加点标记和信息窗口setTimeout("addMarkerAndInfoWindowAnalyze('" + eventType + "')", 500);


二、参数是对象

示例

setTimeout(function(){ 函数名字(obj); }, 1000);



参考:

http://boleyn.iteye.com/blog/1144015

http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html



总结

实际上,延迟函数只能应用于后面的代码不需要使用回调函数里的数据的情况下,否则,千万不能使用延迟函数,因为极有可能后面的代码先于回调函数执行,这个时候后面的代码拿到的数据就不是准确的。


那么如果后面的代码需要用到回调函数里的数据,该怎么办呢?方法有2种,

1、直接把后面的代码放在回调函数里面。

如果回调函数里的数据是在循环里面的话,那么要把后面的代码放到循环里面——并且还要添加一个判断数据是否是最终数据的条件。

3、采用闭包(待研究?)。


示例代码

/** * 查询事件 *  * @param tableId *            表id */function queryEventType(tableId) {var searchOptions = {// map: mapObj,pageSize : 100, // 每次查询数据的数量(最多只能查询100)orderBy : '_id:ASC' // 按id升序排列数据};AMap.service([ "AMap.CloudDataSearch" ], function() {var search = new AMap.CloudDataSearch(tableId, searchOptions);search.searchByDistrict("银川市", function(status, result) {if (status == 'complete') {dataTypeNumbers[dataType] = result.count; // 保存当前数据类型的数量// 计算查询次数,然后循环查询// 把每次的查询数据拼接到一个数组里面去var queryNumber = Math.ceil(dataTypeNumbers[dataType] / 100);for ( var i = 1; i <= queryNumber; i++) {var searchOptions1 = {pageSize : 100,pageIndex : i,orderBy : '_id:ASC' // 按id升序排列数据};var search1 = new AMap.CloudDataSearch(tableId,searchOptions1);search1.searchByDistrict("银川市", function(status, result) {if (status == 'complete') {dataTypeDatas[dataType] = [];dataTypeDatas[dataType] = dataTypeDatas[dataType].concat(result.datas); // 保存当前数据类型的数据// 如果当前数据类型的数量与总数相等,那么才开始处理其他的各项操作if(dataTypeDatas[dataType].length == result.count){// 1.获取页数量getPageCountAnalyze();// 2.拼接数据和分页按钮pingJieDataAndPageButtonAnalyze();// 3.把拼接数据设置到指定divsetPingJieDataToDivAnalyze();// 4.添加点标记和信息窗口addMarkerAndInfoWindowSwitchAnalyze();}} else {return;}});}} else {return;}});});}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1717射正真精品视频动漫 羞羞影院免费影片 强犴视频网站 女生被舔照片视频 床上运动奶视屏 00后小萝莉 喷液视频完整 2019看黄不付费 十部挑战人伦底线的电影 标准七十二种插法不遮不演 床上99种捅法 36种插法不遮不挡视频 儿子曰亲妈 妈装唾视频 爷爷插妈视频 老婆非让我睡她妈视频 真实儿曰亲妈视频观看 单身儿子单身妈 儿子再用点力妈要飞了中文 在上海陪读初三的儿子 加油儿子妈要流了txt 啊儿子深点妈要来了txt 儿子上来妈教你的故事 儿子在快一点妈要飞了视频 单身妈喜欢找儿子 中国家庭毋HH伦s线播放普通话 中国家庭真实毋HH伦s线播放 儿子你快点搞你爸要回来吗 儿子快点你爸回来了嗯 儿子你搞快点你爸要回来啦文字 快点你爸马上就回来了视频 儿子你搞快点你爸要回来啦电影 儿子快拿出来你爸快回来了视频 儿子你要高就快点你爸回来了电影 儿子你要就快点你爸要回来了小说 儿子 快点妈要来了漫画 你快点啊你爸快回来了视频 儿子快点你爸快回来了在哪能看 儿子搞快点你爸要回来了短文 儿子你快停下你爸要醒了视频 儿子用点力妈 儿子深一点用点力阅读 你要搞就快点你爸快回来了视频