【问题标题】:Add addional parameter to function signature向函数签名添加附加参数
【发布时间】:2015-08-19 16:34:21
【问题描述】:

我使用以下代码按预期工作。 现在我想向modifyOpt 添加额外的输入为modifyOpt(value) 我该怎么做? 目前 modifyOpt 正在从 findAPortAsync 获取一个参数,我需要从 outside 传递其他参数...(来自包装所有这些承诺的函数)

return Promise.all([
    fs.readFile(filePath, 'utf8').then(pars.getEx.bind(null, 'user')), 
    sync(3000, 4000, 'localhost').then(modifyOpt)
]).then(function(args) {
    return processExe('exec', args[0], args[1], args[1]);
}) 

我尝试了modifyOpt(value)modifyOpt.bind(value),但没有成功

【问题讨论】:

  • 为什么不使用与将参数传递给pars.getEx 相同的方法?你自己实际编写了多少代码?
  • @Bergi - 我的朋友,我的程序要复杂得多(在承诺方面)我只是放了一些小例子来帮助我理解承诺的概念(我是 JavaScript 新手,主要是承诺概念)...我相信你也给我1-:(
  • 这与promise没有太大关系,它是关于将参数传递给回调。而且您似乎已经知道如何做到这一点,因为您的代码中有pars.getEx.bind(null, 'user')。那你为什么这么问?

标签: javascript promise bluebird


【解决方案1】:

如果你想将函数调用为modifyOpt(value, port),就可以了:

.then(modifyOpt.bind(null, value))

bind 的第一个参数是 this 值,函数参数紧随其后...
你已经为pars.getEx.bind做正确的事了...

当然,您总是可以这样做并使用您选择的任何参数顺序:

.then(function (port) { modifyOpt(port, value); })

【讨论】:

  • 谢谢 我只是对参数顺序有问题,顺便说一句,哪种方式更可取?我在谈论您提供的两个选项...
  • 任何必要的。以最有意义的方式编写您的 modifyOpt 函数,使用您需要“适应”它的任何方式。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2017-01-03
相关资源
最近更新 更多