forEach和for包含异步调用的区别

forEach和for包含异步调用的区别

作为for循环的增强版,forEach在遍历数组时书写更简洁、可读性也更强。但是当循环中包含异步操作时可能会遇一些坑。

doAdd(e) {
    if (e.keyCode == 13) {
      if (!this.todolistHasSearch(this.todoList, this.searchDate)) {
        this.todoList.push({
          title: this.searchDate,
          state: 0
        })
      } else {
        alert("事件已经存在")
      }
      this.searchDate = ''
    }
  }
  todolistHasSearch(todolist: any, Search: any) {
    // 异步存在问题
    // todolist.forEach(val => {
    //   if (val.title == Search) {
    //     return true
    //   }
    // });

    for (let i = 0; i < todolist.length; i++) {
      if (todolist[i].title == Search) {
        return true
      }
    }
    return false
  }
结论

for循环中会等异步调用完成后再执行后面的语句

forEach中包含异步调用时会直接执行后面的语句

如果循环中包含了异步调用、并且循环后的同步操作调用了遍历后的结果,应该使用for循环代替forEach

上一篇:面向对象设计模式之Interpreter解释器模式(行为型)


下一篇:基于JAVA彩票在线购买系统计算机毕业设计源码+系统+lw文档+部署