2011-01-26 36 views
0

我想實現一個執行ajax請求(響應是json)的函數,直到沒有響應的「next」屬性爲止。之後,我需要執行一些回調函數。這是最好的方法是什麼?我的代碼不起作用,因爲回調的範圍是錯誤的,我無法想象如何正確傳遞它。回調函數的作用域

 
_requestPhotos = function(url, callback) { 
    getYFContent(url, function(data) { 
    // some actions 

    if (!!data.next) { 
     _requestPhotos(data.next, callback); 
    } else { 
     callback(smth); 
    } 
    }); 
}; 

回答

0

您發佈的腳本沒有明顯錯誤。例如,等效試驗看起來是這樣的:

alertResult = function(text) { 
    console.log("Result is: " + text); 
} 

doRecursive = function(data, callback) { 
    if(!!data.next) { 
     doRecursive(data.next, callback); 
    } else { 
     callback(data.value); 
    } 
} 

var d = { value: 1, next: { value: 2, next: { value: 3 }}}; 

doRecursive(d, alertResult); 

日誌結果是"Result is: 3",這是你所期望的東西。

錯誤在別處。你是如何第一次調用它,你傳遞給它的回調是什麼(以及它是如何定義的)以及getYFContent究竟做了什麼?

+0

這不僅僅是一個遞歸函數。問題在於「getYFContent」是ajax請求函數,所有操作都在其第二個參數中描述,這是一個回調函數(如$ .get)。 – 2011-01-27 06:18:03