我想将this.companies [i]推送到this.companyForFlyers但由于这是异步的,我总是在变量i中得到错误的值(当我调试代码时,我总是-1)。我该如何解决这个问题?
[]
答案 0 :(得分:2)
问题是用var
声明的变量是函数作用域,因此循环所做的后续更改将反映在循环捕获的i
的值中。使用let
代替创建一个块范围变量。
for (let i = this.companies.length - 1; i >= 0; i--) {
this.storage.get(this.companies[i].CompanyName).then(val => {
if (val == "true"){
this.companyForFlyers.push(this.companies[i])
}
});
}