Javascript Array Push break循环?

时间:2016-04-30 11:58:45

标签: javascript typescript

我的移动应用程序中有以下的Typescript类及其点击功能,该功能由按钮点击触发。感兴趣的是todoItemTable.read,它从我的云后端获取并获取ToDoItems数组。当前代码工作并吐出8个待办事项的文本,但我想将文本存储在一个数组中,所以如果你看到我推入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);
      }
    });
  }

}

出了什么问题?

2 个答案:

答案 0 :(得分:4)

要使用相同的范围,请使用箭头功能,如下所示:

after_load

请参阅the Mozilla Developer Network on Arrow functions

答案 1 :(得分:0)

我遇到了同样的问题,每当我尝试在array.push()的任何地方使用loop时,它会经历一次,然后停止。我通过将数组实例化为空数组(array: string[ ] = [ ])我的loop的OUTSIDE来修复此问题。然后实例化新的字符串以推送到循环中的数组。 希望这能帮助那里的任何人=)