有一个函数作为函数的参数,如语法上可接受的?

时间:2016-10-22 04:38:15

标签: javascript parameters return

我正在尝试将我的开发保持为模块化且易于使用,但我觉得这可能会花费太多。

我正在调用一个函数,该函数使用一个函数将数据作为参数返回,该函数也使用一个返回数据的函数。所以它们是这样嵌套的:

append_vid(
    compile_data(
        request_data(vid_id)
    )
);

因此,request_data()会返回compile_data用于将另一个对象返回append_vid()的对象。

我想知道这是否在语法上是可接受的,因为我以前从未见过有人将函数作为参数嵌套。是否有更有效或标准化的方法来实现这一目标,而不会失去单独功能的模块化。

1 个答案:

答案 0 :(得分:2)

这是完全有效的语法。如果你正在寻找同步电话。

function MethodOne(value) {
  console.log(value);
}

function MethodTwo(value) {
  console.log(value);
  return value * 4;
}

function MethodThree(value) {
  console.log(value);
  return value * 2;
}

MethodOne(
  MethodTwo(
    MethodThree(1)
  )
);

如果从异步调用返回值,则必须更改方法签名并使用promises。以下是Async的示例。

function MethodOne(value) {
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function() {
      value = value * 4;
      console.log(value);
      resolve(value);
    }, 1000);
  });
  return promise;
}

function MethodTwo(value) {

  var promise = new Promise(function(resolve, reject) {
    setTimeout(function() {
      value = value * 2;
      console.log(value);
      resolve(value);
    }, 1000);
  });

  return promise;
}

function MethodThree(value) {
  console.log(value);
  var promise = new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve(1)
    }, 1000);
  });
  return promise;

}

MethodThree(1).then(MethodTwo).then(MethodOne);