我的一个想法是这样的,如下代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JavaScript方法执行超时测试</title>
<script>
var executed = false; // 方法B是否执行的标志位
var x = 0; // 方法A中用来累加计数,使方法A执行超时
var expiredTime = 3000;
// 方法A
function methodA( )
{
// 第一句就执行定时器
setTimeout("methodB()",expiredTime);// setInterval()
// 方法A的耗时内容执行开始
x = x + 1;
document.counter.displayBox.value = x;
for(i = 0;i < 80000;i++)
{
window.status = "i=" + i;
}
// 方法A的耗时内容执行结束
// 当方法A的耗时内容没有超过expiredTime的时间执行完成的话,就直接开始执行方法B
methodB();
// 设置方法B执行完成的标志位
executed = true;
}
// 方法B
function methodB()
{
if(executed == true)
{
// 执行过了......
}
else
{
// 执行......
}
}
</script>
</head>
<body>
<form name="counter">
<input type="text" name="displayBox" value="0" size="10"/>
</form>
<script>
methodA();
</script>
</body>
</html>
异想天开,想用 setTimeout 来做个 workaround ,但是 setTimeout / setInterval 方法是在它所在的方法执行完之后才开始计时的,于是,光当一声,这个 workaround 不成立。
各位有没有做过类似的需求,如何解决的呢?
分享到:
相关推荐
在上述代码中,complete回调函数会在Ajax请求完成时执行,无论成功、失败还是超时。通过检查status参数的值,我们可以判断请求是否因为超时而结束,并执行相应的处理操作。 总结以上所述,为jQuery的Ajax请求添加...
JavaScript中的`setTimeout()`函数是一个非常重要的工具,它允许开发者安排代码在特定的延迟后执行,这对于创建动态效果、异步处理、以及定时任务等场景非常有用。下面将详细讲解`setTimeout()`函数的使用方法和相关...
在JavaScript中,窗口对象(Window)是全局对象,提供了对浏览器窗口的各种控制,包括控制窗口的状态栏、访问窗口的历史记录以及设置超时等功能。 1. **控制窗口状态栏** 窗口状态栏通常位于浏览器窗口的底部,...
而在异步编程中,即使某个任务需要时间(如网络请求),程序也不会阻塞,而是继续执行其他任务,当异步任务完成时再通知程序处理结果。这使得用户体验更加流畅,尤其是在需要网络交互的场景下。 在网页中,我们通常...
超时调用的使用场景包括但不限于:动画和定时任务的实现,以及在一些复杂的事件处理中等待一段时间后再执行操作。例如,在一个表单验证的场景中,可以在用户停止输入一段时间后才开始验证,这可以通过setTimeout来...
在计算机编程中,计时器是一种非常重要的工具,它用于执行特定操作或在特定时间间隔后触发事件。计时器的实现方式多种多样,适用于不同的编程语言和应用场景。本篇文章将深入探讨计时器的基本原理、常见实现方法以及...
同步请求会在请求完成之前阻塞浏览器的主线程,而异步请求则允许浏览器在等待响应时继续执行其他任务。 同步请求造成浏览器假死的问题通常发生在执行耗时的网络请求时。在这个请求完成之前,浏览器不会渲染任何内容...
4. **轮询循环**:doTimeout支持在满足特定条件前持续执行某个函数,这在实现条件检测或者等待某个状态改变的场景下非常实用。 5. **去块优化**:与原生的setTimeout相比,doTimeout在执行延迟任务时考虑到了事件...
要实现自动消失的功能,我们可以使用 setTimeout 函数,该函数可以在指定的时间后执行某个函数。在本例中,我们可以使用 setTimeout 函数来关闭消息提示框。例如,我们可以在显示消息提示框时使用 setTimeout 函数,...
在实际应用中,可能还需要结合其他技巧,如设置User-Agent、处理验证码、模拟登录等,以适应各种复杂的网页抓取需求。记住,始终尊重网站的robots.txt文件,遵循抓取规则,以免引起不必要的麻烦。
这个过程通常包括设置URL、请求方法、超时时间等参数,然后发送请求并接收服务器返回的响应。 在获取到HTML源代码后,接着是解析和抽取目标内容。这通常涉及对HTML的解析,易语言可能没有内置的HTML解析库,但可以...
例如,在处理异步请求时,可以根据返回的数据类型进行不同的处理,比如获取JSON数据后在前端进行动态显示,或者更新页面的某个部分等。$.ajax()方法的灵活使用,大大简化了AJAX技术的应用,使得开发者能够更加专注于...
在Web应用中,我们经常遇到需要等待某个操作完成,但又不能无限期等待的情况,这时就需要设定一个超时时间来确保程序的正常运行。jeefo_timeout作为jeefo框架的一个组成部分,为开发者提供了优雅地处理这种问题的...
使用 `delay` 函数可以实现延迟执行,而 `timeout` 则可以为异步操作设置超时,防止程序因为某个操作卡住。 6. **错误处理**: 在异步编程中,错误处理是关键。Async.js 提供了一个 `tryCatch` 高阶函数,可以...
下面我们将详细介绍如何在Vue.js环境中实现刷新当前页面的方法。 **一、刷新原理** 刷新页面的基本思路是利用Vue Router的导航机制。首先创建一个空页面(例如:/user/back),当用户完成某个操作后,页面会跳转到...
为了提高测试的灵活性,某些动作命令可以附加“并等待”后缀,如“点击并等待”,表示在执行动作之后,Selenium会等待浏览器加载新的页面,直至某个条件满足或者超时。 辅助命令主要用于检查应用程序的状态,并将...
2. 异步请求:文档强调了AJAX请求的异步特性,意味着当Web浏览器发送AJAX请求到服务器时,它不需要等待服务器响应,而可以继续执行其他代码。这使得用户体验更加流畅,因为页面不需要重新加载即可与服务器进行交互。...
除了简单的监听事件,我们还可以利用Promise链来实现更复杂的逻辑,比如在某个特定的加载状态之后执行特定的操作,或者在加载过程中添加超时机制。 6. **async/await** ES7引入的async/await语法可以让Promise的...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行直接交互,实现AJAX功能。在DWR3中,"精确推送"(也称为反向推送或服务器推送)是一种技术,允许服务器主动地将...
这个库特别适用于那些需要在特定事件触发后才能继续执行的场景,例如异步操作、动画完成或者用户确认等。 `wait-for-event` 库的核心功能在于它允许开发者注册一个回调函数,该函数会在指定的事件被触发时得到执行...