Arrays 如何迭代AJAX调用并推送到数组

Arrays 如何迭代AJAX调用并推送到数组,arrays,ajax,polymer-2.x,Arrays,Ajax,Polymer 2.x,在本法典中,我: 获取项目列表(通过AJAX) 获取更多项目详细信息(通过第二次AJAX调用) 将项目+详细信息推送到历史记录数组 代码: [[item.itemId]]> [[item.priceNet]] getRequest(){ 让request=this.$.ajax.generateRequest(); 请求。完成。然后(请求=>{ //返回此.data; 这个。i=0; console.log(this.history);//在第一次迭代时记录数组中的多个对象 这是getRe

在本法典中,我:

  • 获取项目列表(通过AJAX)
  • 获取更多项目详细信息(通过第二次AJAX调用)
  • 将项目+详细信息推送到历史记录数组
  • 代码:

    
    [[item.itemId]]>
    [[item.priceNet]]

    getRequest(){
    让request=this.$.ajax.generateRequest();
    请求。完成。然后(请求=>{
    //返回此.data;
    这个。i=0;
    console.log(this.history);//在第一次迭代时记录数组中的多个对象
    这是getRequest2();
    })
    }
    getRequest2(){
    如果(这个,我{
    这个.updateHistory();
    })
    }
    }
    updateHistory(){
    if(typeof this.responseStock.error==“未定义”){
    这个.推('历史'){
    “itemId”:this.response[0][this.i].itemId,
    “priceNet”:this.responseStock.priceNet
    })
    }否则{
    这个.推('历史'){
    “itemId”:this.response[0][this.i].itemId,
    “priceNet”:空
    })
    }
    this.i=this.i+1;
    这是getRequest2();
    }
    
    但是,在第一次执行时,历史记录会记录数组中的多个对象,因此
    push
    方法不会正确更新

    如何传递数据,以便第一次AJAX调用返回的每个项目都与第二次AJAX调用(如果存在属性)一起进行属性化,然后将其推送到数组中?


    注意:
    this.push
    来自Polymer框架,但问题似乎是
    push
    方法的计时关闭了…

    您正在使用
    req=>{}
    函数,但没有对包含所有数据的
    req
    对象执行任何操作。我不确定您的意思,但是我已经更新了问题以反映模板绑定。查看
    request.completes。然后(req=>{…})
    您没有对
    req
    对象执行任何操作,只是调用回调主体中的其他函数,而没有将
    req
    对象传递给它。是
    req
    对象包含了所有数据。
    <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();
    }