Javascript数组推送中断循环

Javascript Array Push breaks loop?

本文关键字:中断 循环 数组 Javascript      更新时间:2023-09-26

我在手机应用程序中有下面的Typescript类,它的Click函数由按钮点击触发。感兴趣的是todoItemTable.read,它从我的云后端获取ToDoItems数组。当前的代码可以工作,并吐出8个todo项的文本,但我想将文本存储在一个数组中,所以如果你看到我推入todos的注释行,我认为我会这样解决这个问题。然而,这行代码使循环一直在运行,所以我记录了两次第一个ToDo项目,然后什么也没记录。应用程序没有挂起,也没有错误。

export class HelloWorldModel extends Observable {
  public todos: any[]; 
  constructor() {
    super();
  }
  Click() {
    var client = new MobileServiceClient("https://example.azurewebsites.net");
    console.log("CLIENT");
    var todoItemTable = client.getTable("TodoItem");
    console.log("Table");
    this.todos = [];
    todoItemTable.read<TodoItem>().then(function (results) {
      // results is array of TodoItem-s
      console.log(results.length);
      console.log(results[0].text);
      for (let i of results) {
        console.log(i.text);
        //this.todos.push(i.text);
      }
    });
  }
}

出了什么问题?

要使用相同的作用域,请使用箭头函数,如下所示:

todoItemTable.read<TodoItem>().then((results) => {
  for (let i of results) {
    this.todos.push(i.text);
  }
});

请参阅Mozilla开发者网络的Arrow函数

我也遇到了同样的问题,每当我尝试在loop中的任何位置使用array.push()时,它都会运行一次,然后停止。我通过将数组实例化为loop的空数组(array: string[ ] = [ ])OUTSIDE来解决这个问题。然后实例化将被推送到循环内部的数组的新字符串。希望这对任何人都有帮助