这里的第一个问题,所以让我知道我是否未包括所有需要的东西。
我有一个名为this.tickets的数组,该数组存储在我的构造函数中,如下所示:
constructor(TicketService) {
this.ticketService = TicketService;
this.customers;
this.tickets = [];
this.status = false;
}
我有一个函数,该函数可以在检查本地数据库中是否存在api之后一次调用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])
}
}
我得到以下回应:
[__array_observer__: ModifyArrayObserver]
this is the arrys length: 0
我在诺言中调用了每个函数,以便它们按顺序发生。
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();
})
}
我不知道这个array_observer是什么,或者我如何成功遍历这个数组。
任何帮助将不胜感激。
先谢谢您。
答案 0 :(得分:0)
尝试理解此示例,希望它能阐明 因此,如果我调用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();
})
}
希望这可以澄清。