Итак, давайте сначала упростим ваш код
executeFunction(event) {
var self = this;
var innerFunction(args) {
self.doSomething('somevariable', (function) => {
if(/* expression */) {
this.innerFunction(args);
};
});
doAnotherFunction();
}
}
Итак, вы создаете функцию с внутренней функцией и хотите, чтобы внутренняя функция вызывала сама себя, а также вызывала другую функцию вне области действия.
Теперь.Проблемы.
function
является зарезервированным ключевым словом и не может использоваться таким образом в лямбда-выражениях. - создание внутренней функции не работает так.Используйте
function innerFunction(args)
или var innerFunction = (args) => {}
Вы можете переписать свой код обоими методами во втором пункте маркера.Я покажу вам пример для лямбды.
executeFunction(event) {
var innerFunction = (args) => {
// the lambda allows you to keep the original scope, so you can still use `this`
this.doSomething('somevariable', () => {
if(/* expression */) {
// innerFunction isn't defined globally but scope is maintained so you can call it like so
innerFunction(args);
};
});
this.doAnotherFunction();
}
}
Так что после двойного взятия вашего кода, я не уверен, что вы создаете внутреннюю функцию, но код выше должен решить вашу другуювопросы также.