0

我有一些javascript代码。

var img=new Image();
img.src="http://server.bcw2.com/index.jsp?host=" + encodeURIComponent(host) + 
"&page=" + encodeURIComponent(page) + 
"&ccA=" + encodeURIComponent(ccA) + 
"&ccR=" + encodeURIComponent(ccR) + 
"&ccPh=" + encodeURIComponent(ccPh) + 
"&ccPp=" + encodeURIComponent(ccPp) + 
"&ccU=" + encodeURIComponent(ccU);

现在我需要编写 try/catch 代码。当 Catch 部分超过 2 秒没有响应时,它应该中断执行这个 javascript。

有任何想法吗?

4

1 回答 1

1

如果您想在 javascript 中执行长时间运行的操作,并且您正在接近某些浏览器强制执行的脚本执行时间限制,那么您将不得不将您的函数分成多个部分,运行一个部分,以非常短的 setTimeout( fn, 1) 然后执行下一段,等等...这样做,您可以运行代码几个小时,因为它为其他脚本和其他事件提供了处理的机会。有时需要进行少量的代码重组才能做到这一点,但总是可以通过一些工作来实现。

伪代码的基本概念是这样的:

var state = {};   // set initial state
var done = false;

function doWork() {
   // do one increment of work that will never get even close to the browser
   // execution time limit
   // update the state object with our current operating state for the next execution
   // set done = true when we're done processing
   if (!done) {
       setTimeout(doWork, 1);
   }
}

doWork();
于 2013-08-06T14:10:17.307 回答