Angular 7 / Typescript: создание очереди / массива методов - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть требование, чтобы некоторые функции вызывались после завершения выполнения какого-либо метода.

Ниже приведен мой код обработки очереди.

 processQueue() {
    while (this.queue.length) {
      var item = this.queue.shift();
      item.resolve(item.func(item.types));
    }
  }

Это одна из примеров функцийпротолкнуть метод в очередь

 getAllValues() {
    let promise1 = new Promise((resolve, reject) => {
      if (this.isReady) {
        resolve(this._getAllValues());
      } else {
        this.queue.push({
          resolve: resolve,
          func: this._getAllValues
        });
      }
    });
    return promise1;
  }

И это одна из функций, которая будет вызываться при обработке очереди

 _getAllValues() {
    var results = {}, values = this.enumInstance.enumsCache.values;
    for (var type in values) {
      if (values.hasOwnProperty(type)) {
        results[type] = values[type][this.enumInstance.lang];
      }
    }
    return results;
  }

Проблема, с которой я сталкиваюсь, это когда я вызываю _getAllValues()непосредственно тогда я могу получить доступ к this.enumInstance.Но когда к тому же методу обращаются через processQueue(), я не могу получить доступ к this.enumInstance.Это дает мне undefined.Я думаю, что this не относится к основному классу в этом случае.

Так что кто-нибудь может мне помочь здесь.Как я могу решить эту проблему?

...