【问题标题】:Use a function with parameters inside a callback在回调中使用带参数的函数
【发布时间】:2015-06-15 10:25:34
【问题描述】:

我编写了一个函数,它可以将未知数量的函数作为参数,但是当一个或多个函数也带参数时,我不知道如何使它工作。

这是我想要实现的一个简单示例:

function talk(name) {
  console.log('My name is ' + name);
  var callbacks = [].slice.call(arguments, 1);
  callbacks.forEach(function(callback) {
    callback();
  });
}

function hello() {
  console.log('Hello guys');
}

function weather(meteo) {
  console.log('The weather is ' + meteo);
}

function goodbye() {
  console.log('Goodbye');
}

// I would like to be able to do the following:
//talk('John', hello, weather('sunny'), goodbye);

【问题讨论】:

    标签: javascript parameters callback


    【解决方案1】:

    您可以传递一个匿名函数,该函数可以调用带有所需参数的函数

    talk('John', hello, function(){
        weather('sunny')
    }, goodbye);
    

    function talk(name) {
      console.log('My name is ' + name);
      var callbacks = [].slice.call(arguments, 1);
      callbacks.forEach(function(callback) {
        callback();
      });
    }
    
    function hello() {
      console.log('Hello guys');
    }
    
    function weather(meteo) {
      console.log('The weather is ' + meteo);
    }
    
    function goodbye() {
      console.log('Goodbye');
    }
    
    talk('John', hello, function() {
      weather('sunny')
    }, goodbye);

    【讨论】:

    • 哇,无法相信解决方案这么简单。非常感谢!
    【解决方案2】:
    talk('John', hello, weather.bind(null, 'sunny'), goodbye);
    

    在这种情况下,.bind 本质上是返回一个带有一些绑定参数的函数 - 与 Arun 的答案非常相似,尽管您可能会认为这种方法更简洁/可读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2017-12-25
      • 2016-08-15
      • 2023-03-28
      相关资源
      最近更新 更多