美文网首页
JS中如何解决for循环中的延迟执行问题

JS中如何解决for循环中的延迟执行问题

作者: 宇落星辰_30ba | 来源:发表于2019-05-25 21:43 被阅读0次

我们先来看一个例子
在JS方法里面设置一个for循环,输出每次循环的值,如下图

for (var i = 0; i < 5; i++) {
    setTimeout(function(){
        console.log(i)
    },1000);
}
image.png

我们可以根据闭包的知识来更改一下for循环中的逻辑,利用闭包将i的值传递给a

for (var i = 0; i < 5; i++) {
    (function(a){
        setTimeout(function(){
            console.log(a)
        },1000);
    }(i))
}

这次在运行程序我们就可以看到输出内容是0开始输出了


image.png
JS中刚刚的写法还可以按照下面的方式实现
for (var i = 0; i < 5; i++) {  
  setTimeout(fn(i),1000);  
}
function fn(a){
    return function(){
        console.log(a);
    }
}

结果如下图


image.png

JS中如果for循环中有异步方法,就需要用闭包的方式保留当前循环变量值

相关文章

  • JS中如何解决for循环中的延迟执行问题

    我们先来看一个例子在JS方法里面设置一个for循环,输出每次循环的值,如下图 我们可以根据闭包的知识来更改一下fo...

  • JavaScript补充

    01-延迟和异步加载JS 如何延迟加载JS:defer defer:js脚本可以延迟到文档完全被解析后执行 如何异...

  • js模仿京东无延迟菜单效果

    开发基本菜单结构,普通二级菜单效果,加入延迟解决移动问题,解决延迟引入的新问题 function.js封装的函数: }

  • Javascript语法中的重难点

    0. 前言 记录js使用过程中遇到的重难点。 1. 如何解决异步问题 js中函数调用是异步的,即不等待函数执行结束...

  • 关于js中异步问题的解决方案

    在js中有一个始终无法绕过的问题,如何优雅地解决异步问题。实际上,js在执行过程中,每遇到一个异步函数,都会将这个...

  • 循环里面请求api,结果不是想要好的。

    问题描述:例如以下循环中执行一个函数,函数请求api(这里用延迟期模拟)。 参考:https://www.cnbl...

  • IE浏览器适配

    1、引用JS文件不执行处理: 问题: 使用 引用的js文件在IE浏览器中不执行 解决方法: 改用 或者 引入...

  • Promise

    有延迟参数 无延迟参数 bluebird.js可以解决ie浏览器不支持promise语法的问题

  • 2019-05-21

    Vue移动端中.fastclick解决300毫秒点击延迟问题 在main.js文件下面 importfastCli...

  • 题目

    js: setTimeout时间延迟为何不准?单线程,先执行同步主线程,再执行异步任务队列。 如何判断变量的类型?...

网友评论

      本文标题:JS中如何解决for循环中的延迟执行问题

      本文链接:https://www.haomeiwen.com/subject/fffttctx.html