当前位置: 首页 > 编程笔记 >

JavaScript setTimeout,操作顺序,clearTimeout

万俟超
2023-03-14
本文向大家介绍JavaScript setTimeout,操作顺序,clearTimeout,包括了JavaScript setTimeout,操作顺序,clearTimeout的使用技巧和注意事项,需要的朋友参考一下

示例

setTimeout

    list-paddingleft-2">
  • 等待指定的毫秒数后执行功能。

  • 用于延迟执行功能。

语法: setTimeout(function, milliseconds)或window.setTimeout(function, milliseconds)

示例:  此示例在1秒钟后向控制台输出“ hello”。第二个参数以毫秒为单位,因此1000 = 1秒,250 = 0.25秒,依此类推。

setTimeout(function() {
    console.log('hello');
}, 1000);

setTimeout问题

如果setTimeout在for循环中使用该方法

for (i = 0; i < 3; ++i) {
  setTimeout(function(){
    console.log(i);
  }, 500);
}

这将输出值3 three时间,这是不正确的。

解决此问题的方法:

for (i = 0; i < 3; ++i) {
  setTimeout(function(j){
    console.log(i);
  }(i), 1000);
}

它将输出值0,1,2。在这里,我们将i用作参数(j)传递给函数。

操作顺序

此外,由于Javascript是单线程的并且使用全局事件循环,setTimeout因此可以通过setTimeout零延迟调用将其添加到执行队列的末尾。例如:

setTimeout(function() {
    console.log('world');
}, 0);

console.log('hello');

实际将输出:

hello
world

同样,这里的零毫秒并不意味着setTimeout内部的函数将立即执行。根据剩余在执行队列中的要执行的项目,所花费的时间会略多一些。这只是被推到队列的末尾。

取消超时

clearTimeout():停止执行中指定的功能setTimeout()

语法: clearTimeout(timeoutVariable)或window.clearTimeout(timeoutVariable)

范例:

var timeout = setTimeout(function() {
    console.log('hello');
}, 1000);

clearTimeout(timeout); // 超时将不再执行
           

 类似资料:
  • 2.8 操作顺序 当表达式中出现了多个运算符的时候,计算顺序取决于优先级规则。一个完整的优先级说明是十分复杂的,出于让您尽快入门的目的,先列出以下几点: 乘除法运算优先于加减法运算。因此2*3-1得到5,而不是4。2/3-1得到-1,而不是1(记住在整型除法中2/3结果是0)。 如果运算符有相同的优先级,它们会按照从左往右的顺序计算。因此表达式minute*100/60中,乘法运算最先进行,得到5

  • 问题内容: 我有以下问题: 在PyQt制作的GUI中按下按钮时,我必须执行以下两项操作: 立即更新QTextBrowser 运行将等待一段时间并在之后启用某些按钮的方法。 我得到的是在等待一段时间后,同时完成1和2。 部分代码是: 我在一个clickStop方法中尝试了所有方法,尝试了是否为updateProgress发出信号。始终,仅在等待时间之后刷新GUI。 不过,我之前遇到过这个问题,我想我

  • 主要内容:顺序栈元素"入栈",顺序栈元素"出栈",总结顺序栈,即用 顺序表实现栈存储结构。通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如何使用顺序表模拟栈以及实现对栈中数据的基本操作(出栈和入栈)" 给大家做详细介绍。 如果你仔细观察顺序表(底层实现是数组)和栈结构就会发现,它们存储数据的方式高度相似,只不过栈对数据的存取过程有特殊的限制,而顺序表没有。 例如,我们先使用顺序表(a 数组)存储  ,存储

  • 主要内容:顺序表插入元素,顺序表删除元素,顺序表查找元素,顺序表更改元素我们学习了 顺序表及初始化的过程,本节学习有关顺序表的一些基本操作,以及如何使用 C 语言实现它们。 顺序表插入元素 向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下 3 种情况: 插入到顺序表的表头; 在表的中间位置插入元素; 尾随顺序表中已有元素,作为顺序表中的最后一个元素; 虽然数据元素插入顺序表中的位置有所不同,但是都使用的是同一种方式去解决,即:通过遍历,找到数据元素要插入的位

  • reverse 返回一个与指定list相反顺序的list。 val unsortedList = listOf(3, 2, 7, 5) assertEquals(listOf(5, 7, 2, 3), unsortedList.reverse()) sort 返回一个自然排序后的list。 assertEquals(listOf(2, 3, 5, 7), unsortedList.sort())

  • 因为在过滤2之后,我们还得再找到一个元素来分层极限(2),操作,那么为什么输出不像我解释的那样呢?