关于async和await的问题

关于async和await的问题

老师您好,最近在学习es6的异步处理方案,有一个问题就是如果要对一个数组中的数据进行异步处理的话,如果采用forEach进行遍历,forEach的参数用async函数。那么这个操作将会是并发执行的。但是如果采用for of进行遍历,那么在遍历过程中的异步操作就是继发执行的了。请问老师forEach和for of对数据中的数据进行异步操作的话一个是并发的一个是继发的?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、首先,我们先来看一下什么是继发执行和并发执行:

(1)继发执行:每个时间段只能执行一个任务,一个线程执行中,其他线程必须等待该线程执行完才能执行

(2)并发执行:每个时间段并发地执行多个任务,一般没有先后顺序区分

2、再来看forEach和for of

(1)forEach()是从头到尾把数组遍历一遍,对数组对象的每一个元素执行给定的回调函数,而实际上forEach()是瞬间同时遍历数组元素的(forEach()的特性),这就导致了可能同时执行多个任务(回调),也就是并发执行

(2)for of则是要执行代码块语句完成后才会执行下一次循环,这样每一次只能执行一个任务,也就是继发执行,为什么for of执行代码块语句完成后才会执行下一次循环呢?来看for of的语法:

for (variable of iterable) {
    statement
}

variable:每个迭代的属性值被分配给该变量。

iterable:一个具有可枚举属性并且可以迭代的对象。

从语法结构上开看,for of遍历数组中的一个元素,就把这个元素分配给变量(variable),变量接收这个元素,就执行一次{……}中的代码,执行完,再遍历数组中的一个元素,再把这个元素分配给变量(variable),变量接收这个元素,就再执行一次{……}中的代码……以此类推。每次执行一个任务。

希望可以帮到你!

好帮手慕糖 2019-07-08 19:50:06

同学你好,是的哦。继续加油!

祝学习愉快!

  • 提问者 qq_那些荒废流年 #1
    抱歉老师,我少打了三个字为什么,您能跟我讲一下原因或者原理吗?或者要从哪方面去了解原理
    2019-07-08 20:24:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师