是否可以使用尚不存在的参数传递函数?

时间:2018-07-13 07:45:57

标签: javascript function parameters parameter-passing

真的很抱歉,如果标题没有意义。不确定如何使我的问题简短

我想知道的是,

我有一个recursive function,在我执行此功能时不必一定是recursive function,我想知道它是否可以更灵活地重用。

我的函数看起来像这样runAxios(ele, api)是我想知道是否可以重用的函数

const ct = (arr, num, res) => {
  const promises = [];

  for(let i = 0; i < num; i++){
    const ele = arr.shift();  // take out 1st array, literally take out
    if(ele){
      promises.push(
        runAxios(ele, api)  // this is the function I am wondering if can be reused
      )
    }
  }

  Promise.all.......
};

如果runAxios(ele, api)可以是任何东西,那么我相信这个ct可以更加灵活吗?

我想知道是否可以

const ct = (arr, num, res, fx) => {
  const promises = [];

  for loop......
    if(ele){
      promises.push(
         fx  // this is then passed as any other function other than just a fixed `axios function` that I wrote
      )
    }
  }

Promise.all........

};

当我第一次尝试时,我意识到这是行不通的,因为runAxios的第一个参数是在循环内完成的,这意味着该变量直到它在函数内部才存在。

只是好奇是否有一种容易做到的方式,以至于我只是不知道怎么做或实际上是不可能的?

谢谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

当然可以做到。您只需要调用随所需参数传递的函数即可。您将计算ele参数,然后将其传递给函数。一个显示其工作方式的通用示例如下所示:

const functionToBeCalled = (parameter1, parameter2) => {
  console.log(parameter1 + parameter2);
}

const ct = (fx) => {
  //..code
    let ele = 1;
    fx(ele, 2);
  //..code
};

ct(functionToBeCalled);

答案 1 :(得分:0)

您的方法非常贴近。它应该看起来像这样:

setTimeout(p => {
        let url =`https://www.google.com/maps/dir/?api=1&destination=${place.x},${place.y}&travelmode=driving&dir_action=navigate`;
        window.location.href = url;
    }, 100);

(我还自由地用更紧凑的方法替换了您的循环。)