假设我有这个简单的JavaScript函数:
var exclusiveFunction = function(){
for(index in firstArray)
{
for(secondIndex in firstArray[index])
{
// do stuff to firstArray[index][secondIndex]
}
}
}
我的问题:在一个调用完成整个函数之前,有可能多次调用此代码。我想要的是什么:
if(exclusiveFunction.workingAtTheMoment)
{
exclusiveFunction.stopFunction();
exclusiveFunction();
}
基本上,检查函数是否正在运行,如果是,则暂停它(以及它的每个实例都在运行),然后重新启动它。这可能吗?
答案 0 :(得分:0)
JavaScripts是单线程的,应该使用回调来提供异步行为。您的函数没有任何回调。因为它以你想要的方式工作..
答案 1 :(得分:0)
您可以使用varible来跟踪功能超越
var isFunRunning =0;
var exclusiveFunction = function(){
if(isFunRunning==0)
{
isFunRunning =1;
for(index in firstArray)
{
for(secondIndex in firstArray[index])
{
// do stuff to firstArray[index][secondIndex]
}
}
isFunRunning=0;
}
else {
//code to keep count of function triggered in between
}
}
或者通过这个 http://api.jquery.com/jquery.callbacks/
OR __________________________________________________________________-
var callbacks = $.Callbacks();
var count =0;
var exclusiveFunction = function(){
if(isFunRunning==0)
{
isFunRunning =1;
for(index in firstArray)
{
for(secondIndex in firstArray[index])
{
// do stuff to firstArray[index][secondIndex]
}
}
isFunRunning=0;
}
else {
callbacks.add( exclusiveFunction );
count ++;
}
}
然后触发回调
答案 2 :(得分:0)
我不确定是否有可能创建并行函数(可能是事件或异步;我对这个想法不感兴趣),但你可以停止这样的功能:
window.someCounter = 0;
function doSomethingUntilOtherCall(){
var myID = ++window.someCounter;
while (myID === window.someCounter){
// do something
}
}