如何在不访问Java母函数的情况下将参数传递给回调

迈阿密市民

在Javascript中,我具有来自外部库的以下功能:

getParentTabId(callback);

在代码的其他部分,它的用法如下:

var openTab = function(result){
  var parentId = result.Id;
  //opentNewTab is another external function
  openNewTab(parentId, 'https://www.google.com');
}

function handleOnClick(){
  getParentTabId(openTab);
}

那是行得通的。我的目的是传递openNewTab变量作为第二个参数,而不是使用固定值(例如“ https://www.google.com ”),如下所示:

var openTab = function(result, url){
  var parentId = result.Id;
  //opentNewTab is another external function
  openNewTab(parentId, url);
}

我尝试了以下方法:

function handleOnClick(){
  var url = 'http://stackoverflow.com';
  getParentTabId(function(result){
    openTab(url, result);
  });
}

但这是行不通的,因为回调无法看到该url变量。考虑到我无法修改getParentTabId函数,您将如何解决此问题?

克里斯汀·佐塞尔(Christian Zosel)

您可以尝试声明一个函数getOpenTab该函数返回openTab带有动态url函数:

function getOpenTab(url) {
  return function(result) {
    var parentId = result.Id;
    //opentNewTab is another external function
    openNewTab(parentId, url);
  }
}

function handleOnClick() {
  getParentTabId(getOpenTab('www.foo.com'));
}

说明:您正确地声明了该回调未“看到” url参数,因为在getParentTabId回调的实现中称为callback(result)这就是为什么必须动态创建回调函数的原因。

现在,如何创建具有动态内容的功能?简单,只需创建另一个函数即可,该函数返回具有所需动态参数的回调函数。

使用匿名功能,整个过程变为:

function handleOnClick() {
  var url = 'www.foo.com';
  getParentTabId(function(result) {
    var parentId = result.Id;
    openNewTab(parentId, url);
  });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不创建新函数的情况下将参数传递给React + Typescript中的回调?

如何在不丢失“ event”属性的情况下将参数传递给事件侦听器的回调函数?

如何在不展开包装的情况下将ref传递给方法/函数参数?

如何在不牺牲性能的情况下将函数作为参数传递给Julia中的其他函数?

如何在不更改上下文的情况下将参数数组传递给函数?

如何在不调用函数的情况下将参数传递给函数?

如何在不覆盖父范围的情况下将参数传递给指令?

装饰器如何在不更改其签名的情况下将变量传递给函数?

如何在不进行for循环的情况下将任意数量的参数传递给R函数?

如何在不带参数的情况下将大数据集传递给函数

如何在不覆盖数据源参数的情况下将附加参数传递给Kendo模板

如何在期望两个参数的情况下仅将一个参数传递给函数?

如何在不影响此参数的情况下将参数绑定到jQuery回调

R如何在不返回变量的情况下将变量从一个对象传递给函数?

如何在express中将参数传递给回调函数?

如何在Python中将参数传递给回调函数?

如何将参数传递给回调函数内部

如何将参数传递给匿名回调函数?

如何将参数传递给addEventListener的回调函数

将参数传递给回调函数

将参数传递给回调函数

将参数传递给回调函数

如何在不评估变量的情况下将变量传递给自定义组件?

如何在不触发提示的情况下将密码短语传递给ssh-add?

如何在不覆盖TTY的情况下将密码传递给su / sudo / ssh?

如何在不复制列表的情况下将列表传递给线程而不破坏它

如何在不格式化的情况下将字符串传递给程序?

C ++:如何在不执行功能的情况下将参数作为参数传递?

如何在不显示URL的情况下将参数传递给Angularjs的router-ui?