如何在闭包打字稿中访问循环索引?

时间:2017-09-14 12:25:09

标签: typescript ionic2 closures

我想将this.companies [i]推送到this.companyForFlyers但由于这是异步的,我总是在变量i中得到错误的值(当我调试代码时,我总是-1)。我该如何解决这个问题?

[]

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])
      }
    });
}