欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 15:27:58
...

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