将参数传递到 setTimeout 的闭包中

2023-11-30

我遇到了一个问题,我的应用程序位于 iframe 中,并且是从外部域调用的。当 iframe 正确加载时,IE9 不会触发加载事件,所以我认为我陷入了使用 setTimeout 来轮询页面的困境。

不管怎样,我想看看我的 setTimeout 完成通常需要多长时间,所以我希望能够记录 setTimeout 从我的回调中触发的延迟,但我不确定如何将该上下文传递给它,以便我可以记录它。

App.readyIE9 = function() {
  var timings = [1,250,500,750,1000,1500,2000,3000];    
  for(var i = 0; i < timings.length; i++) {
    var func = function() {
    if(App.ready_loaded) return;
      console.log(timings[i]);
      App.readyCallBack();
    };
    setTimeout(func,timings[i]);
  }
};

我在 IE9 的控制台中不断收到 LOG: undefined 。

实现这一目标的正确方法是什么?

Thanks


发生这种情况是因为你没有接近的价值i在你的func。当循环完成后,i is 8 (timings.length),数组中不存在。

你需要做这样的事情:

App.readyIE9 = function() {
  var timings = [1,250,500,750,1000,1500,2000,3000];    
  for(var i = 0; i < timings.length; i++) {
    var func = function(x) {
      return function(){
          if(App.ready_loaded) return;
          console.log(timings[x]);
          App.readyCallBack();
      };
    };
    setTimeout(func(i),timings[i]);
  }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数传递到 setTimeout 的闭包中 的相关文章

随机推荐

  • 在某些行/列值处提取子矩阵

    我需要根据行 列索引和切片距离来切片 2D 输入数组 在下面的示例中 我可以从输入矩阵中提取 3x3 子矩阵 但我无法调整此代码以适应我想要的任何搜索距离 而无需手动写下索引 Example import numpy as np creat
  • 寻找具有分段完成/树模型的 QCompleter 示例

    PySide 文档包含此部分具有树模型的 QCompleter PySide QtGui QCompleter 可以在树模型中查找补全 假设任何项目 或子项目或子子项目 都可以通过指定项目的路径明确表示为字符串 然后一次完成一层 让我们以用
  • 为什么有时在 Windows 控制台程序中按 Ctrl+Z 时才会终止输入? [复制]

    这个问题在这里已经有答案了 我知道使用 ctrl z 来表示 EOF 或 EOT 通常已经过时且不推荐 但我只是好奇幕后发生了什么 假设我在 C 中有这样的东西 include
  • Angular 通用参考错误 - KeyboardEvent 未定义

    我在其中添加了 多米诺骨牌 服务器 ts甚至还更新了webpack server config js as module rules test ts js loader regexp replace loader options match
  • 是否可以使用 Streams.intRange 函数?

    我想使用 Streams intRange int start int end int step 来实现反向排序流 然而 似乎 java util Streams 类不再可用 但它仍然在标准库的 rt jar 中 该方法是否在其他类中或被其
  • 修改ggplot中的viridis调色板

    我试图通过一个主要是数字的因素来为 ggplot 着色 如下所示 iris gt ggplot aes Sepal Length Sepal Width color cut Petal Length 0 7 geom point scale
  • Angular 2 共享服务将数据传递到组件

    我正在尝试传递字符串值this title从我的登陆页面 组件到我的结果页面 组件 我检索到list show值 并将其发送到我的TitleService就像我的 登陆页面 component html ol li list show li
  • 正则表达式仅匹配整个单词中的数字

    我想使用 NET 匹配字符串内的正数和负数 无小数或千位分隔符 但我只想匹配整个单词 所以如果一个字符串看起来像 redeem 1234 paid 234432 那么我想匹配 1234 和 234432 但如果文本是 LS022 1234
  • VB.NET 中的 HTTP GET

    在 VB net 中发出 http get 的最佳方法是什么 我想得到像这样的请求的结果http api hostip info ip 68 180 206 184 在 VB NET 中 Dim webClient As New Syste
  • 使用 youtube API v3 时订单不起作用

    我正在尝试获取某个频道的最后 10 个视频 当我运行以下代码时 from apiclient discovery import build API SERVICE NAME youtube API VERSION v3 def youtub
  • “警告:在参数列表中声明了‘结构矩阵’[默认启用]”和错误:‘scanToken’的类型冲突

    我一直在研究这个问题 试图找出导致这些错误的原因 但到目前为止我一无所获 我有这个功能 struct token scanToken struct matrix refTable struct token send int counter
  • 如何自动重新启动 CSS 动画

    我是网页设计新手 在 CSS 方面面临一些问题 其实我是在克隆amazon com并创建一个带有滑动动画的滑块 但动画只运行一次 我想让它无限运行 这是我的代码 HTML index html
  • 请推荐最佳的批量删除选项

    我正在使用 PostgreSQL 8 1 4 我有 3 个表 一个是核心表 表 1 其他是从属表 表 2 表 3 我在表1中插入了70000条记录 并在其他2个表中插入了适当的相关记录 由于我使用了 CASCADE 我可以使用 DELETE
  • 卡住创建“安全修剪”html.ActionLink 扩展方法

    我正在尝试为 MVC 的 htmlHelper 创建一个扩展方法 目的是根据控制器 操作上设置的 AuthorizeAttribute 启用或禁用 ActionLink 借自MVC站点地 图在 Maarten Balliauw 创建的代码中
  • 如何更改谷歌地图 v2 android 中的信息窗口(自定义)位置?

    我有一个带有谷歌地图的屏幕 在屏幕顶部有一个用于搜索位置的自动文本视图 并制作一个自定义信息窗口来显示更多详细信息 问题是当用户单击任何标记自定义窗口弹出窗口作为其默认行为时 屏幕中心 所以它混合了自动文本视图 我可以更改屏幕上的信息窗口位
  • 如何将 UIButton 的标题设置为左对齐?

    我需要在左侧显示电子邮件地址UIButton 但它被定位到中心 有什么办法可以将对齐方式设置为左侧UIButton 这是我当前的代码 UIButton emailBtn UIButton alloc initWithFrame CGRect
  • 如何将资源添加到jar文件中

    我需要将一个 exel 文件添加到我的 jar 中 以便它是可移植的 我知道答案是使用 getClass getResource 但我不知道如何使用此代码 我的 src 文件夹中有 excel 文件和我的类文件 它可以在 netbeans
  • T[N] 和 std::array 之间的区别[重复]

    这个问题在这里已经有答案了 我的问题非常简单 但更具体地说 我想引用其中的两行斯特鲁斯特鲁普11 T N 固定大小的内置数组 N 个连续的 T 类型元素 不size 或其他成员函数 array
  • 使用 spacy 从数据框中提取实体

    I read contents from excel file using pandas import pandas as pd df pd read excel FAM template Update 1911274 JS xlsx df
  • 将参数传递到 setTimeout 的闭包中

    我遇到了一个问题 我的应用程序位于 iframe 中 并且是从外部域调用的 当 iframe 正确加载时 IE9 不会触发加载事件 所以我认为我陷入了使用 setTimeout 来轮询页面的困境 不管怎样 我想看看我的 setTimeout