2017-08-31 146 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

相关问题