噗。。
1. 我是提问者,很感谢大家的帮助。
2. 今天想了想,已经解决了这个问题了,等会儿会放上来解决方法。
3. 感谢@草薙在 你的建议我会考虑,不过JS的运行机制我有学过的,你说的我也知道。正因为如此,所以没有“显而易见的”解决方法,所以才要动脑筋思考不是~
4. 感谢@hyjiacan 虽然你没有解决我的问题。target()只不过是一个代号,意味着后面还有很多代码,并不是一个具体的函数呢。
5. 感谢@三间北房 你的方法我知道的,这样确实可以实现“暂停”。不过如果后续代码有很多很多行,这样处理就不合适了~
6. 感谢@ghp120 你的方法是另一个思路,回头可以试一试,或者你可以放上来你测试通过的代码~
以下是我的解决方案:
思路:
setInterval和setTimeout不同之处,一方面在于setInterval将会不断地重复执行代码而setTimeout只是执行一次,另一方面在于JS并不会再setTimeout处暂停而等待setTimeout中的代码执行,却会在setInterval处暂停,不断重复执行其中的代码。
此外,setInterval的一个特性是第一次执行的时候,也会等待一个时间,而不是立即执行。
所以我们要做的就是使用setInterval,并且让它只执行一个循环。
代码:
……
var CD;
function sleep(){clearInterval(CD);}
CD = setInterval("sleep()", countdown);
target()
……
=============================================
以上~
用setTimeout是有些局限性,是一个并发执行。
最完备的方法应该是触发机制,判断上一个方法结束后执行target,或者执行setTimeout(target, countdown),而且后续的方法由target中判断执行完毕后执行,就基本实现了你的要求。
你当js可以sleep吗?
想实现这个功能必须自己设计好脚本的执行,js不会停下来的,除非执行完了,或者有alert什么的。好好设计一下结构,应该可以满足你的要求
比如:
setTimeout(next, countdown);
function next(){
target();
......
其他内容的脚本
......
}
必须要用setTimeout,setTimeout里执行target然后再用setTimeout放后续代码
setTimeout(target, countdown);
一般来说,这样是可以的