Javascript数组推送中断循环?

Javascript数组推送中断循环?,javascript,typescript,Javascript,Typescript,我有下面的Typescript类,它的Click功能是通过我的移动应用程序中的按钮点击触发的。有趣的是todoItemTable.read,它从我的云后端获取一个todoitem数组。当前代码可以工作并输出8个待办事项的文本,但我想将文本存储在一个数组中,因此,如果您看到我推入待办事项的注释行,我想这就是解决问题的方法。但是,这一行代码使循环运行,因此我将第一个ToDo项记录两次,然后再不记录其他内容。应用程序没有挂起,并且没有错误 export class HelloWorldModel ex

我有下面的Typescript类,它的Click功能是通过我的移动应用程序中的按钮点击触发的。有趣的是
todoItemTable.read
,它从我的云后端获取一个todoitem数组。当前代码可以工作并输出8个待办事项的文本,但我想将文本存储在一个数组中,因此,如果您看到我推入
待办事项
的注释行,我想这就是解决问题的方法。但是,这一行代码使循环运行,因此我将第一个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);
      }
    });
  }

}
导出类HelloWorldModel扩展了Observable{
公共待办事项:任何[];
构造函数(){
超级();
}
单击(){
var client=新的MobileServiceClient(“https://example.azurewebsites.net");
控制台日志(“客户端”);
var todoItemTable=client.getTable(“TodoItem”);
控制台日志(“表格”);
this.todos=[];
todoItemTable.read().then(函数(结果){
//结果是TodoItem-s的数组
console.log(results.length);
console.log(结果[0].text);
for(让我看看结果){
console.log(i.text);
//this.todos.push(i.text);
}
});
}
}

出了什么问题?

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

todoItemTable.read<TodoItem>().then((results) => {
  for (let i of results) {
    this.todos.push(i.text);
  }
});
todoItemTable.read()。然后((结果)=>{
for(让我看看结果){
this.todos.push(i.text);
}
});

请参见

每当我尝试使用
array.push()
时,
循环中的任何地方
都会运行一次,然后停止。通过将数组实例化为
循环
外部的空数组(数组:string[]=[]),我修复了此问题。然后实例化要推送到循环内数组的新字符串。 希望这对任何人都有帮助=)