JavaScript:延迟访问和延时执行函数

这篇具有很好参考价值的文章主要介绍了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函数的作用域不能访问外部函数,需要通过匿名函数传递外部参数进去。文章来源地址https://www.toymoban.com/news/detail-523801.html

到了这里,关于JavaScript:延迟访问和延时执行函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • javascript:在foreach循环完成之后执行一个回调函数

    常规方法 代码如下面demo所示,在foreach的回调函数中进行判断,当循环到数组最后一位元素的时候,执行回调函数: 使用Promise实现 实际工作中,当目标数组的元素内容比较复杂,在回调函数中没有办法进行简单的逻辑判断时,可以使用Promise.all 方法实现:

    2024年02月11日
    浏览(45)
  • 布局传输延迟该怎么计算?PCB中布线的传播延时公式

    传播延时(tPD)是信号从一个点传播到另一个点所需要的时间。传输线传播延时是材料相对介电常数的函数。 微带布局传播延时 您可以使用公式 5 来计算微带线布局传播延时。 公式 5: 带状线布局传播延时 您可以使用公式 6 来计算带状线布局传播延时。 公式 6: 图 9 显示了微

    2024年02月07日
    浏览(36)
  • JavaScript函数变量的生命周期,自执行函数、闭包、反转数组案例及冒泡排序案例

    一、变量的生命周期 JavaScript 变量的生命期从它们被声明的时间开始。 局部变量会在函数运行以后被删除。 全局变量会在页面关闭后被删除。 二、自执行函数 执行函数通常都是定义之后立即执行,以后都不再会调用,所以声明时可以省略函数名,因此自执行函数又叫匿名函

    2024年02月06日
    浏览(46)
  • 基于 Redis 实现高性能、低延迟的延时消息的方案演进

    🎉欢迎来系统设计专栏:基于 Redis 实现高性能、低延迟的延时消息的方案演进 📜其他专栏:java面试 数据结构 源码解读 故障分析 🎬作者简介:大家好,我是小徐🥇 ☁️博客首页:CSDN主页 小徐的博客 🌄每日一句: 好学而不勤非真好学者 📜 欢迎大家关注! ❤️ 随着

    2024年01月22日
    浏览(68)
  • JavaScript实现点击复制(JS访问剪贴板相关)

    一、具体代码 ​ 网页前端开发中有时会出现这样的场景:让用户点击某个按钮,然后就能直接复制对应的文本内容,让用户可以将文本内容粘贴到想要粘贴的地方,常用于分享功能模块中。如果想要实现这种效果就需要我们去访问用户的剪贴板,然后把想要复制的内容写入

    2024年02月11日
    浏览(39)
  • 【技巧】ScriptEngine--Java动态执行JS Javascript脚本(可调用java的方法)

    开发手册 Java Platform, Standard Edition Nashorn User\\\'s Guide, Release 14 用户手册 Nashorn User\\\'s Guide (oracle.com) https://docs.oracle.com/en/java/javase/14/nashorn/ 甚至可以让前端来写后端业务代码 可以通过js调用java的方法, 通过传参的方式将java对象传给js 可以单独写个JsUtil 让js来调用 里边写常用的方法

    2024年02月01日
    浏览(45)
  • js 函数声明和函数表达式的执行结果

    参考:https://juejin.cn/post/7237051958993469496 推荐:看 《你不知道的 JavaScript》,里面有详细的 js 执行细节,看完很有收获。

    2024年02月08日
    浏览(39)
  • jQuery.js - 前端必备的Javascript库

    作者: WangMin 格言: 努力做好自己喜欢的每一件事 jQuery.js 是什么? jQuery是一个快速简洁、免费开源易用的JavaScript框架, 倡导写更少的代码,做更多的事情 。它封装JavaScript常用的功能代码,提供了一种简便的JavaScript设计模式,以及我们开发中常用到的操作DOM的API,优化HTML文

    2024年02月05日
    浏览(70)
  • JavaScript节流功能(js节流函数,节流功能的应用与解析,深入了解JavaScript节流函数)

    简述:上篇文章介绍了js防抖功能,这期说下js节流功能。节流就是某一高频事件不断被触发时,将多次执行变成每隔一段时间执行,具体点就是减少一个事件在一段时间内的触发频率,它是一种常用的函数优化技术,可以限制函数的执行频率,从而提高网页的性能和用户体验

    2024年02月13日
    浏览(41)
  • 前端Javascript | 数组值随机选择函数

    为了解决 postman 传参数据定制化,需要写一点前置脚本,有用到随机选取数组中的值来造数据。

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包