2017-08-31 188 views
0

我試圖將一個額外的參數傳遞給第三個回調函數(它不是我自己的回調函數)。js - 將額外的參數傳遞給回調函數

const selectedItems = dt.rows({ selected: true }); 
const selectedIndexes = selectedItems.indexes(); 
const selectedData = selectedItems.data(); 

let data_object = []; 

$.each(selectedData, (i, o) => { 
    data_object.push(o['PackageName']); 
}); 

window.bridge.deleteApps(data_object, (success_list, selectedIndexes) => { 
    console.log("test"); // selectedIndexes -> undefined 

}); 

背景:這是附帶的Qt功能觸發一個Python方法(PyQt的)時,第一個參數傳遞給Python中的第二參數是從蟒蛇法(success_list)返回一個回調函數,但我也需要selectedIndexes

當我做

window.bridge.deleteApps(data_object, (success_list, abc=selectedIndexes) => { 
    console.log("test"); // abc + selectedIndexes is available 

}); 

我很抱歉,我沒有工作片斷爲你測試,但我做了關於一些回調和期試驗研究其實不明白,所以我不能重現這種情況。

回答

1

我認爲你的困惑的一部分是如何處理回調。基本上取決於window.bridge.deleteApps函數將參數傳遞給您提供的回調。所以除非你是那個函數的作者,否則沒有一個很好的方式讓它傳遞你的附加參數。但是,在上面的示例中,您應該有權訪問selectedIndexes,因爲您已使用const聲明它,並且可以從回調中訪問它。

所以,你應該能夠有這樣的代碼:

window.bridge.deleteApps(data_object, (success_list) => { 
    console.log(selectedIndexes); // Should be available because you've declared it in a higher scope 
    console.log(success_list); // Gets passed by the .deleteApss function 
}); 
+0

OMG你是對的...我很困惑AF,多數民衆贊成我第一次嘗試和IAM相當確信它說'selectedIndexes是undefined' - .- – FalloutBoy

+0

如果你正在使用'const selectedIndexes = selectedItems.indexes();'作爲你的調用來獲得'selectedIndexes'的值,你確定你實際上從中獲得了一個值嗎?在實際進行其他調用之前,你能記錄'selectedIndexes'嗎? – stetsmando

+0

是的,現在工作正常。我非常確定,當它昨天訪問回調函數時,我得到了一個未定義的錯誤,這就是爲什麼我甚至要求幫助,但現在我可以輕鬆地訪問回調中的變量......所以最後從來沒有存在過問題:S感謝你的幫助! – FalloutBoy

相關問題