Я пытаюсь создать универсальную рекурсивную функцию, которая получает функцию с параметрами в качестве параметра.
Я создал функцию recursiveExec
, которая принимает в качестве параметра функцию API для выполнения. Эта функция API имеет 2 аргумента.
В рекурсивной функции мне нужно изменить значение одного из этих двух аргументов и снова запустить ту же функцию API.
Однако, при попытке доступа к параметрам функции API в рекурсивной функции, машинопись выдает ошибку.
node:13724) UnhandledPromiseRejectionWarning: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
Более того, я не могу понять, как отправить новое значение параметра в функцию для выполнения ...
Код ниже упрощен для этого поста. Я удалил рекурсивную часть и просто заменил вторым вызовом той же функции
Большое спасибо!
API-функция с 2 параметрами
const apiFunc= async (
param1: string,
param2?: string | undefined
): Promise<ApiResult> => {
const resu = await apicall({
param1,
param2
});
return resu
};
универсальная рекурсивная функция
const recursiveExec= async (funcExecute: () => any): Promise<any> => {
let d: any[] = [];
console.log(funcExecute.arguments) <-----error is here
const resu = await funcExecute();
d = [...d, ...resu.data];
// HERE IF THE PARAMETER parameter 2 IS NOT NULL I NEED TO
// REEXECUTE THE funcExecute function
if (resu.parameter2 && resu.parameter2!== "") {
// how to pass the new value of parameter2 and then executing function ?
const resu2 = await funcExecute();
d = [...d, ...resu2.data]
}
return d;
};
вызов казни
const li = await recursiveExec(() =>apiFunc("a", "b"));
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"resolveJsonModule": true,
"esModuleInterop": true,
"outDir": "dist",
"target": "es6",
"strict": true,
"lib": ["esnext"],
"noImplicitAny": false
},
"include": ["src/**/*"]
}