JavaScript:延迟访问和延时执行函数
在java中线程有sleep函数可以延迟执行,但是在js中并没有这样的函数。
唯一有的就是setTimeout延迟执行函数,但是这个函数也是有很多坑。
for (var i = 0; i < 6; i++) {setTimeout(function () {console.log(i);}, 1000)
}//结果是6个6
场景:由于js是单线程异步执行的,当调用第三方API接口时,如果对方没有提供批量操作的接口,我们就需要多次请求相同的API,但是在for语句中会同时去访问多个相同请求,会造成并发冲突。
这个时候需要延迟执行请求,避免程序错误。
let dataArray=[];
function apiRequest(val){}
for (var i = 0; i < dataArray.length; i++) {setTimeout(apiRequest(dataArray[i]), 1000); // 意图每秒执行一次,不是累加的
}//error,并发冲突
单纯使用setTimeout函数,最后发现延迟1s后还是一起执行了内部函数,造成冲突。
思路是每个setTimeout函数延迟不同的时间1000 * i。
let dataArray=[];
function apiRequest(val){}
for (var i = 0; i < dataArray.length; i++) {(function (t, func, data) {// 注意这里是形参setTimeout(function () {func(data);}, 1000 * t); // 还是每秒执行一次,不是累加的})(i, apiRequest, dataArray[i]); // 注意这里是实参,这里把要用的参数传进去
}
同时,由于setTimeout函数的作用域不能访问外部函数,需要通过匿名函数传递外部参数进去。
JavaScript:延迟访问和延时执行函数相关推荐
- js Function对象扩展与延时执行函数实例代码
网页特效 function对象扩展与延时执行函数实例代码 function.prototype.delay=function(this1,timeout){ this1=this1||null; ti ...
- 延时执行函数:前浪死在沙滩上
业务场景:有主表.子表两个GridView点击主表的行,会自动读取主表对应的子表数据 但是如果反复点击会导致反复读取,其实反复点击的时候只需要最后一次执行查询,前面的几次点击都是无意义操作 根据这一需 ...
- python延时执行函数_一日一技:在 Python 中实现延迟调用
一日一技:在 Python 中实现延迟调用 收录于话题 #你不知道的 Python 71个 摄影:产品经理 产品经理的生日餐 熟悉 Golang 的同学都知道,Golang 里面有一个关键词叫做def ...
- python延时执行函数_python延迟指定时间执行特定任务脚本
函数功能说明: 指定时间间隔(day,hour,min,second)一个或多个选项,例如,从现在开始延迟 5分钟/1小时,运行一个hello函数. from datetime import date ...
- js关于setTimeout实现延时执行函数并进行传参
传参方式一:setTimeout第一个参数可以是一段JS的代码字符串片段,第二个参数为延迟时间单位ms <script> function ab() { var a=1; var b =1 ...
- python延时执行函数_python 限制函数执行时间,自己实现timeout的实例
如下所示: # coding=utf-8 import signal import time def set_timeout(num, callback): def wrap(func): def h ...
- [微信小程序] 当动画(animation)遇上延时执行函数(setTimeout)出现的问题
小程序中当动画animation遇上setTimeout函数内部使用this.setData函数,通常情况下会出现报错.本文先告诉解决方法,后分析报错原因 1.解决方法: 在 setTimeout() ...
- javascript 匿名自执行函数
有一种匿名函数可以自动执行,这种函数定义如下: (function(){//执行一些语句 })(); 也可以为函数添加参数,语法格式如下: (function(arg_1,arg_2,...arg_n ...
- js-延迟执行函数的个人理解
首先说一下,这里的 延迟执行函数 不是 延时执行函数,别搞混了 延迟执行函数是基于目标函数被执行一定次数后触发的函数. 延迟执行函数的思想有点类似于以下场景: 张三,这个路口经过的第三个人就是我们的目 ...
- JS模块化(立即执行函数)
JavaScript的模块化 //用立即执行函数制造的模块是JS最常用的模块(模块是实现特定功能的一组属性和方法的封装, //可以独立完成一些功能,且有私有成员)之宽放大模式(允许模块所需参数为空,比 ...
最新文章
- S2JH经验分享:控制jdbc:initialize-database与其他bean加载顺序
- PHP支持模板,让ThinkPHP5支持模板主题(参照ThinkPHP3.2)
- 2021-09-22
- 按单词逆序句子(含标点)
- 精通java ee项目案例_精通JavaEE项目案例
- 計算機二級-java-03
- node.js提供的服务器live-server的使用
- poj 3243 Clever Y(Baby-Step Giant-Step)
- mybatis_07动态SQL_foreach循环
- 服务器网卡无法开启lldp协议,lldp支持-VMware vSphere - 思科华为论坛
- 如何搭建一个vue项目(完整步骤)
- .Net框架搭建之2、SQL Server MEF依赖注入 MVC Repository框架
- 执行DBMS_SQLTUNE优化sql或dbms_stats收集统计信息报错:ORA-20003
- 商城模板_商城模板网站html5_微信小程序商城模板
- 2020找工作更难了?做好这4方面,找到高薪好工作
- 文本数据下的用户画像
- CS4398 Cirrus Logic的旗舰级音频解码芯片
- 最近的题目总结(树,电话线铺设,我的天)
- 步进电机驱动器驱动不了电机的一种情况及解决方案
- 文秘专业计算机基础试卷,秘书题库:文秘类专业基础理论课试卷上2
热门文章
- Redis 菜鸟教程学习笔记- Redis 命令- Key
- Android studio环境变量配置及其作用(JDK与SDK配置)
- 怎样用等价类划分设计测试用例
- 我的世界java版forge放在哪_我的世界forge怎么装mod(mod安装方法介绍)
- 2021-0(C++)输入一个字符串,判断其是否是回文字符串(回文字符串就是正序与反序是相同的字符串)5-27
- vscode下载之前版本插件
- 国家统计局统计用区划和城乡划分代码
- 局域网桌面共享会议该如何实现屏幕共享?
- Step7 MicroWin V4.0 SP9在Win10系统中的安装方法
- 2022年第三届全国大学生网络安全精英赛