2010-08-02 80 views
0

的功能工作,我有两个功能停止从另一个功能

function1() 
{ 
    //... 
} 

function1我发出Ajax请求,并加载图像

还有另外一个功能 - 在这里我叫function1加载图像function2

现在,是什么问题。

如何停止的function1传播之前,我会再次function2称呼它?

function2() 
    { 
     // ... 
     // how stop old propogation of function1 here? 
     function1(); //call function1 again 

    } 

感谢

+0

你想中止从function1当前正在进行的AJAX请求吗? – 2010-08-02 11:09:27

+0

我需要在开始新加载之前停止加载图像(即停止'function1'并重新启动它)。 – Simon 2010-08-02 11:10:32

回答

0

嗯我真的不明白你正在尝试做的,但仍然......

如果你想取消AJAX请求,我不认为有一个简单的解决方案。启动另一个请求来反转/停止更改会更好。

但是当你问“如何停止的功能?”,我的回答是,为什么在那里它并不需要的地方开始吧。根据需要调用它。

如果你真的想抛砖引玉吧&在特定事件而言,内部功能设置,如果块。或者说你的情况设置的标志在功能上1个&从功能2.

+0

问题在于:在函数'mouse2'上的'function2'上调用'function1'来加载图片。但是,如果我moove鼠标很长一段时间(即呼叫功能1很多很多次)的结果,我没有得到最终图像(我从一些当前状态的图像),所以我想停止的功能早期的召唤的propogetin。 .. – Simon 2010-08-02 11:20:57

0

使用,你可以在更广泛的范围内操作的标志变化。像:

flag = false; 

function function2(){ 
    if(flag) function1(); 
} 

现在你可以调用

function2(); // and function1 will not be called 

或设置:

flag = true; 

function2(); //now function1() will be called. 
+0

:)我需要反向变体。无论如何需要调用'function1'。但之前停止它的工作从另一个电话之前.. – Simon 2010-08-02 11:33:22

0

而不是加载图像立即func1()被调用,您可以插入一个小的延迟;这样,每次调用函数时,都可以取消上一次下载并安排新的下载。这里有一个例子:

var delay = 3500, // Delay for 3.5 seconds 
    timeoutId; 

function func1(url) { 
    if (timeoutId) clearTimeout(timeoutId); 
    setTimeout(function() { 
     // Add code to download image here 
    }, delay); 
} 

function func2() { 
    // As long as you call func1 again before the timeout elapses, the 
    // previous download should be cancelled, leaving you with the last 
    // selected image 
}