2010-08-02 81 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 
}