我正在尝试将额外的参数传递给第三个回调函数(它不是我自己的回调函数)。
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)的函数,第一个param传递给python,第二个param是一个回调函数,返回python方法(success_list
)但是我也需要selectedIndexes
。
当我这样做时
window.bridge.deleteApps(data_object, (success_list, abc=selectedIndexes) => {
console.log("test"); // abc + selectedIndexes is available
});
对不起,我没有工作片段给你测试,但我做了一些关于回调的研究,实际上不理解它,所以我无法重现这个案例。
答案 0 :(得分: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
});