真的很抱歉,如果标题没有意义。不确定如何使我的问题简短
我想知道的是,
我有一个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
的第一个参数是在循环内完成的,这意味着该变量直到它在函数内部才存在。
只是好奇是否有一种容易做到的方式,以至于我只是不知道怎么做或实际上是不可能的?
谢谢您的任何建议。
答案 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);
(我还自由地用更紧凑的方法替换了您的循环。)