setTimeout() 实现程序每隔一段时间自己主动运行

本文详细介绍了JavaScript中的setTimeout()方法,包括其定义、使用方法及语法。此外还提供了如何通过该方法实现每隔固定时间执行特定任务的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义和使用方法

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

语法

setTimeout(code,millisec)
參数描写叙述
code必需。要调用的函数后要运行的 JavaScript 代码串。
millisec必需。在运行代码前需等待的毫秒数。

提示和凝视

提示:setTimeout() 仅仅运行 code 一次。假设要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。


【演示样例】

//每5秒使用Ajax取一次数据
setTimeout(function(){
	var f = arguments.callee;
	$.post('/3G/wall/ajax_vote/',
		{
		    client_id : <?php echo $memberId;?>,
		    vote_id: <?php echo $vote_id;?>
		},
		function(data){
		setTimeout(f,5000);//一定要加这一行
		if(!data) return;
		var res = JSON.parse(data);
		$(".list_vote").append(res);			
	})
},5000);


### 使用 `setTimeout` 实现定期发送 HTTP 请求 为了实现定期发送 HTTP 请求的功能,可以利用递归的方式不断调用 `setTimeout` 来触发请求。下面是一个完整的解决方案: #### 定义递归函数 定义一个名为 `sendRequestRecursively` 的函数,该函数接受两个参数:一个是用于发起网络请求的回调函数 `requestFunction`;另一个是间隔时间 `intervalInMs`。 ```javascript function sendRequestRecursively(requestFunction, intervalInMs) { requestFunction().then(response => { console.log('Response received:', response); // 继续下一次请求前等待指定的时间 setTimeout(() => { sendRequestRecursively(requestFunction, intervalInMs); }, intervalInMs); }).catch(error => { console.error('Error occurred during the request:', error); // 如果发生错误可以选择停止重试或延迟一段时间后再尝试 // 这里简单处理为立即终止递归 console.warn('Stopping further requests due to an error.'); }); } ``` 此代码片段展示了如何构建一个能够周期性执行给定请求操作并根据响应结果决定下一步行的基础框架[^1]。 #### 发起实际的HTTP请求 接下来创建具体的请求函数 `makeHttpRequest`,这个例子中假设使用的是 Fetch API 来发出 GET 请求到某个 URL 地址上。 ```javascript async function makeHttpRequest() { try { let response = await fetch('https://api.example.com/data'); if (!response.ok) throw new Error(`Network response was not ok ${response.statusText}`); return await response.json(); } catch (error) { throw new Error(`There has been a problem with your fetch operation: ${error.message}`); } } ``` 这段脚本说明了怎样封装一个异步函数来进行标准的数据获取流程,并且包含了基本的成功与失败分支处理逻辑[^3]。 #### 开始定时任务 最后一步就是启整个过程,只需调用之前定义好的 `sendRequestRecursively` 函数即可。 ```javascript // 设定每五秒钟重复一次请求 const INTERVAL_IN_MS = 5000; sendRequestRecursively(makeHttpRequest, INTERVAL_IN_MS); ``` 上述配置实现每隔一定时间段自向服务器端提交查询命令的效果,同时保持良好的异常捕获机制以应对可能出现的各种状况[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值