setInterval立即触发一次以及setInterval同步执行的解决办法

本文探讨了JavaScript中setInterval函数的异步执行特性,以及如何通过异步控制实现同步效果。方法包括在setInterval前预执行代码和使用async/await结合Promise来控制执行流程。同时,展示了如何利用Promise延迟执行以确保代码块执行完毕。
摘要由CSDN通过智能技术生成

实现setInterval刷新页面立即执行一次

问题:setInterval函数在刷新页面的时候第一次执行需要等到设置的循环时间到才执行
方法1:在setInterval函数前写一遍要执行的js代码(可实现,但不雅观),代码如下:

 console.log(“立即执行”);
setInterval(function(){
  console.log(“立即执行”);
},10000)

方法2:代码如下:

function fn() {
    console.log(“立即执行”);
    return fn    // 函数中返回自身
}
setInterval(fn(), 10000)    // 定时器中,函数先执行一次

setInterval小知识:
setInterval(fn(), 2000); 加括号 立即执行,且执行一次.
setInterval(fn, 2000);不加括号,2秒后执行,且循环执行.

实现setInterval同步执行

问题:setInterval函数为异步执行(setTimeout同理),导致代码块没有执行完就进入到下一个执行条件了
方法:代码如下:

setInterval(function(){
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
(async function loop() {
    for (let i = 0; i < 13; i++) {
	    console.log(“停5秒前执行的代码”);
        await delay(5000);//线程停5秒后再执行后面的代码
        console.log(“停5秒后执行”);
    }
})();
},100000)
JavaScript中,使用setInterval函数来实现定时循环执行代码。当刷新页面时,setInterval函数的第一次执行会等待设置的循环时间后才执行。如果想要实现第一次立即执行,可以使用以下两种方法之一: 方法一:在setInterval函数前写一遍要执行的代码。这样可以确保在setInterval函数开始执行之前,代码已经被执行一次。例如: console.log("立即执行"); setInterval(function(){ console.log("立即执行"); }, 10000); 方法二:使用立即执行函数来实现。这意味着在setInterval函数内部使用一个匿名函数,并立即调用它。然后在匿名函数内部返回setInterval函数本身。这样可以实现立即执行并开始循环的效果。例如: setInterval(function(){ console.log("立即执行"); // 这里是要执行的代码 return arguments.callee; }, 10000); 以上是两种常见的实现立即执行的方法,还有其他方法可根据需要自行搜索。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [setInterval立即触发一次以及setInterval同步执行解决办法](https://blog.csdn.net/zhouyingxiong/article/details/120219525)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Vue中循环倒计时的实现(setInterval定时器立即执行)](https://blog.csdn.net/m0_58440770/article/details/124468033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值