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
- js睡眠
- JS睡眠函数
- js使用睡眠功能
- JS 睡眠函数用法
- JS睡眠函数
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 睡眠
- 在Js中使程序睡眠的sleep方法
- Js利用setTimeout实现在循环中每次睡眠固定时长的效果
- JS中 实现for循环里面睡眠1秒再执行的相同的效果
- 解读睡眠
- Java语言基础之Object类
- ubuntu安装firefox的flash插件
- 查询测试
- 求平方根
- 学习贪吃蛇JS项目实战笔记2
- js睡眠
- mysql 转orecle 需要考虑的问题
- Ubuntu下Firefox有些网页打不开的解决
- 从”JAVA“而终 15:java 多线程
- 存储过程&函数&触发器@变量&权限
- 自己的理解JVM
- RSA算法详解及C语言实现
- foreach 和 for 循环的区别
- Immigrants in California