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