Как перебрать вызов AJAX и нажать на массив - PullRequest
0 голосов
/ 25 июня 2018

В этом коде I:

  1. Получить список элементов (через AJAX)
  2. Получить дополнительные сведения о элементах (через 2-й вызов AJAX)
  3. Push item+ сведения к массиву истории

Код:

<template is="dom-repeat" items="[[history]]" index-as="index">
  <p>[[item.itemId]]>
  <p>[[item.priceNet]]</p>
</template>

...

getRequest() {
  let request = this.$.ajax.generateRequest();
  request.completes.then(req => {
      // returns this.data;
      this.i = 0;
      console.log(this.history); // Logs several objects in array on 1st iteration
      this.getRequest2();
    })
}

getRequest2() {
  if (this.i<this.data.length) {
      this.itemId = this.data[this.i].itemId;
      let request = this.$.ajax2.generateRequest();
      request.completes.then(req => {
        this.updateHistory();
      })
    }
  }

updateHistory() {
  if(typeof this.responseStock.error == 'undefined') {
    this.push('history', {
      "itemId": this.response[0][this.i].itemId,
      "priceNet": this.responseStock.priceNet
    })
  } else {
    this.push('history', {
      "itemId": this.response[0][this.i].itemId,
      "priceNet": null
    })
  }
  this.i = this.i + 1;
  this.getRequest2();
}

Однако при первом экземпляре история регистрирует несколько объектов в массивепоэтому метод push не обновляется должным образом.

Как я могу передать данные таким образом, чтобы каждый элемент, возвращаемый при первом вызове AJAX, был приписан второму вызову AJAX, если атрибутысуществует, а затем отправить его в массив?

Примечание: this.push происходит из среды Polymer, но проблема, похоже, заключается в том, что синхронизация метода push отключена ...

...