Javascript &引用;[uu数组uu观察者:ModifyArrayObserver]";在数组上迭代时

Javascript &引用;[uu数组uu观察者:ModifyArrayObserver]";在数组上迭代时,javascript,aurelia,Javascript,Aurelia,这里的第一个问题,如果我没有包括所有需要的东西,请告诉我 我的构造函数中存储了一个名为this.tickets的数组,如下所示: constructor(TicketService) { this.ticketService = TicketService; this.customers; this.tickets = []; this.status = false; } 我有一个函数,在检查本地数据库中是否存在响应数据后,它进行api调用,并一次将响应

这里的第一个问题,如果我没有包括所有需要的东西,请告诉我

我的构造函数中存储了一个名为this.tickets的数组,如下所示:

  constructor(TicketService) {
    this.ticketService = TicketService;
    this.customers;
    this.tickets = [];
    this.status = false;
  }
我有一个函数,在检查本地数据库中是否存在响应数据后,它进行api调用,并一次将响应数据推送到一个数据库中

  setTickets () {
     this.customers.forEach(data => {
      var acctName = encodeURIComponent(data.accountname);
      this.ticketService.getTicketByAccount(acctName).then(resp => {
        if (resp.data.accountname == data.accountname) {
          this.tickets.push(resp.data)
        }
      })
    })
  }
之后,我尝试在一个单独的函数中迭代数组:

  getZendeskTicketStatus () {
    console.log(this.tickets)
    console.log("this is the arrys length: " + this.tickets.length)
    for (var i = 0; i < this.tickets.length; i++) {
      console.log(this.tickets[i])
    }
  }
我调用这些函数中的每一个都是为了保证它们按顺序发生

    activate() {
    new Promise((resolve, reject) => {
        var customerPromise = this.setCustomers();
        resolve(customerPromise);
        console.log("First")
      })
      .then(() => {
        console.log("Second")
        this.setTickets();
      })
      .then(() => {
        console.log("Third")
        this.createTicketsInDb();
        this.getZendeskTicketStatus();
      })
  }
我不知道这个数组是什么,也不知道如何成功地迭代这个数组

任何帮助都将不胜感激


先谢谢你

试着理解这个例子,希望它能澄清 因此,如果我调用setTicket,并不意味着它将等待响应。 所以为了让setTickets等待响应,我做了这个修改

setTickets () {
    return new Promise((resolve, reject)=>{
        this.customers.forEach(data => {
            var acctName = encodeURIComponent(data.accountname);
            this.ticketService.getTicketByAccount(acctName).then(resp => {
              if (resp.data.accountname == data.accountname) {
                this.tickets.push(resp.data)
              }
              resolve();
            })
          })
    })

 }
现在让调用函数等待响应

activate() {
    new Promise((resolve, reject) => {
        var customerPromise = this.setCustomers();
        resolve(customerPromise);
        console.log("First")
    }).then(async () => {
        console.log("Second");
        //dont skip it till the time you get the response
     await  this.setTickets();
    }).then(() => {
        console.log("Third");
         this.createTicketsInDb();
this.getZendeskTicketStatus();
    })
}

希望这能澄清。

什么是resp.data,你能提供相同的数据吗?resp.data看起来如下:试着从setTicket内部调用getZendeskTicketStatus,在推送数据后再调用它。如果在setTicket内部调用,则循环工作,知道为什么吗?我不确定我是否理解为什么它在那里工作,而不是在一个单独的函数中。所以基本上getZendeskTicket是在得到响应之前被调用的
activate() {
    new Promise((resolve, reject) => {
        var customerPromise = this.setCustomers();
        resolve(customerPromise);
        console.log("First")
    }).then(async () => {
        console.log("Second");
        //dont skip it till the time you get the response
     await  this.setTickets();
    }).then(() => {
        console.log("Third");
         this.createTicketsInDb();
this.getZendeskTicketStatus();
    })
}