账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS中数组的map()方法是并发执行的吗?
    • 2017-09-29 00:00
    • 11
    26
    0

    本人新手,在学习阮一峰大师的ES6,看到这里:

    async function logInOrder(urls) {
        // 并发读取远程URL 
        const textPromises = urls.map(async url => { 
            const response = await fetch(url);
            return response.text();
    });
        // 按次序输出 
        for (const textPromise of textPromises) {
            console.log(await textPromise); 
        } 
    } 

    上面代码中,虽然map方法的参数是async函数,但它是并发执行的,因为只有async函数内部是继发执行,外部不受影响。后面的for..of循环内部使用了await,因此实现了按顺序输出。
    上面代码使用fetch方法,同时远程读取一组 URL。每个fetch操作都返回一个 Promise 对象,放入textPromises数组。
    以上摘自阅读内容,根据大师的话“只有async函数内部是继发执行”,我有两种理解:1:map()函数内的方法是并发执行的。2:map()函数中的async函数之间是并发执行的。为了验证,我自己写了一个方法,用计时模拟异步事件:

    [1,2,3,4,5].map(
        (value)=>{
            var date=new Date();
            while(new Date().getTime()<date.getTime()+6000-value*1000){}
            console.log(value);
        }
    );

    结果是按顺序输出1,2,3,4,5.
    于是我怀疑是async函数之间是并发的:

    [1,2,3,4,5].map(
        async (value)=>{
            var date=new Date();
            while(new Date().getTime()<date.getTime()+6000-value*1000){}
            console.log(value);
        }
    );

    结果依然是1,2,3,4,5.
    以上两种情况并没有实现并发(5在1之前输出,我试过增加while的循环时间,但是没有效果)
    于是我想问;1.map()是不是一个并发执行的函数?2.async函数之间是并发的吗?3.我的代码有什么问题吗?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版

    回答动态

    师傅被妖怪抓走了:发布了悬赏问题火爆全网的“元宇宙”到底是什么?预计能赚取 1积分收益
    酒后略带风情:发布了悬赏问题Android内存中Graphics与Code占用过高预计能赚取 10积分收益
    扛起拖把扫天下:发布了悬赏问题typescript如何导出接口配置?求解,谢谢!预计能赚取 10积分收益
    发布了悬赏问题Vue 如何改变返回页面的路径?如让B页面只能返回到A页面.预计能赚取 11积分收益
    发布了悬赏问题vue H5移动端;底部bottom固定定位,安卓弹起键盘导致页面变形如何解决?预计能赚取 10积分收益
    发布了悬赏问题请问为什么tomcat8.5 GET请求中文正常,POST请求还需要设置UTF-8.预计能赚取 10积分收益
    发布了悬赏问题vue2.5+ts创建以及引入jq的方法预计能赚取 11积分收益
    情场浪女:发布了悬赏问题import ggplot时报错module 'pandas' has no attribute 'tslib'预计能赚取 10积分收益
    见心书画许老师18753375161:发布了悬赏问题echarts3 legend禁止点击事件,允许悬浮事件预计能赚取 11积分收益
    aa_92cb0bd09f:发布了悬赏问题codewar上的一个问题预计能赚取 11积分收益