js - 将额外的参数传递给回调函数

时间:2017-08-31 16:59:37

标签: javascript qt pyqt5 arrow-functions

我正在尝试将额外的参数传递给第三个回调函数(它不是我自己的回调函数)。

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

});

对不起,我没有工作片段给你测试,但我做了一些关于回调的研究,实际上不理解它,所以我无法重现这个案例。

1 个答案:

答案 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
});