【问题标题】:Javascript Array Push breaks loop?Javascript Array Push 中断循环?
【发布时间】:2017-09-08 13:33:20
【问题描述】:

在我的移动应用程序中,我有以下 Typescript 类,它是由单击按钮触发的 Click 函数。有趣的是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);
      }
    });
  }

}

出了什么问题?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

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

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

    the Mozilla Developer Network on Arrow functions

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,每当我尝试在loop 的任何地方使用array.push() 时,它都会运行一次然后停止。我通过将数组实例化为我的loop 之外的空数组(array: string[ ] = [ ]) 解决了这个问题。然后实例化要推送到循环内的数组的新字符串。 希望这可以帮助那里的任何人=)

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 2020-04-29
        • 1970-01-01
        相关资源
        最近更新 更多