Javascript避免使用SetInterval进行轮询

Javascript避免使用SetInterval进行轮询

一.起因

博主前几日在测试Artisan时,意外发现多个SetInterval的使用降低了界面的流畅和造成使用的卡顿。

二,我的解决方法

例如[使用Fetch进行轮询]:

		//消息盒子查询推送机制
		function AlertMessages() {
			fetch('http://123.56.107.97/Home_AlertMessages', {
				headers: {
					'Content-Type': 'application/json'
				},
				mode: 'cors',
				method: 'POST',
				body: JSON.stringify({
					"Account": Auto_Account, 
				}),
			}).then(function(response) {
				return response.text();
			}).then(function(text) {
				//更新操作
				document.getElementById("New_Message_Alert").innerHTML = text;
			});
			setTimeout(AlertMessages, 2000);
		}
		setTimeout(AlertMessages, 2000);

我了使用setTimeout [docs]收到上一个回复时再去调用它。这样就可以避免可能的拥塞或功能堆叠或任何想要调用它的情况,以及以防请求/响应时间超过的间隔。

function refresh() {
    // make Ajax call here, inside the callback call:
    setTimeout(refresh, 5000);
    // ...
}

// initial call, or just call refresh directly
setTimeout(refresh, 5000);


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2019-08-03 20:33:59

修改时间:2019-08-03 20:35:29

查看次数:30

评论次数:0