Как вызвать функцию внутри функции в ionic3? - PullRequest
0 голосов
/ 23 мая 2018

Как вызвать функцию внутри функции в ionic3 Я пытался использовать эту функцию, но она не работает, и я получил сообщение об ошибке в консоли '=>' Ожидается, подскажите кто-нибудь, как это исправить?

shareProductWithSelectedUser(event) {
  var self = this;
  var  arr1 = "";
  var  arr2 = "";
  var  arr3 = "";

  // Iterating loop - continue only after callback from Firerbase.
    var x = 0;
    var loopArray(arr1, arr2, arr3) {

    // here calling inner function for share product with three param(userId, userTypeId, callback)
    self.callFuncForShareProduct(arr1[x], arr2[x], arr3[x], (function) =>  {
       // any more items in array? continue loop
        if(x < arr1.length) {
          this.loopArray(arr1, arr2, arr3);
         };
      });
      // start 'loop'
      loopArray(self.userIdListForShareProduct, self.userTypeIdListForShareProduct, self.userObjectListForShare);
    }

1 Ответ

0 голосов
/ 23 мая 2018

Итак, давайте сначала упростим ваш код

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();
    }
}

Так что после двойного взятия вашего кода, я не уверен, что вы создаете внутреннюю функцию, но код выше должен решить вашу другуювопросы также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...