2011-10-20 61 views
0

我有它運行一個cacheListener對象內異步方法如下調用:傳遞額外的變量爲回調

ohttp.asyncOpenCacheEntry(url, 4, cacheListener); 

這裏是回調對象/函數的樣子:

var cacheListener = { 
    onCacheEntryAvailable: function(arg1, arg2, arg3) { 
    // do something. 
    } 
} 

什麼我試圖做的是爲該回調添加額外的參數。我試過在通話結束,然後在函數定義追加第三個參數,但它不會正確地傳遞這樣的(myArg末):

ohttp.asyncOpenCacheEntry(url, 4, cacheListener, myArg); 

這裏是回調對象/函數看起來像用額外的參數:

var cacheListener = { 
    onCacheEntryAvailable: function(arg1, arg2, arg3, myArg) { 
    // do something. 
    } 
} 

myArg,爲預計,不過去了,我不知道如何使一個構造,將允許要正確傳遞的參數。

感謝您的幫助,

+0

我正在考慮的一件事是將所有這些代碼放在同一個對象下,然後創建一個將在所有這些方法中共享的「數據」屬性。這樣我就不必傳遞任何東西。 –

回答

2

你將不得不把它包起來,如果你不控制是一個使用你的回調代碼。事情是這樣的:

ohttp.asyncOpenCacheEntry(url, 4, cacheListener, { 
    onCacheEntryAvailable: function(arg1, arg2, arg3) { 
     cacheListener.onCacheEntryAvailable(arg1, arg2, arg3, myArg); 
    } 
}); 

如果有回調對象的其他方法,那麼你就必須來包裝這些呢。

+0

工作,謝謝! –