首页 web前端 js教程 解决for循环中异步请求顺序不一致的问题

解决for循环中异步请求顺序不一致的问题

Dec 17, 2019 pm 04:56 PM
for 异步请求

解决for循环中异步请求顺序不一致的问题

解决for循环中异步请求顺序不一致的问题

工作中遇到一个问题

for循环,再把循环出来的ID再进行二次请求

这就导致一个问题

请求结果返回顺序不一致

原因:异步请求会把回调事件放入微任务事件队列,宏任务执行完毕再执行微任务,具体参考事件队列机制

 【相关课程推荐:JavaScript视频教程】  

解决方法:

通过map方法进行循环请求

将异步请求方法封装起来,返回一个promise

这样将会返回一个具有多个promise的数组

通过promise.all()方法把promise包装成一个新的promise实例

// 通过Promise把所有的异步请求放进事件队列中
getInfo(item ,index) {
    const ms = 1000 * Math.ceil(Math.random() * 3)
    return new Promise((resolve,reject) => {
        setTimeout(() => {
           axios.get(id).then((result) => {
               resolve(result)
           })
        }, ms)
    })
}

// 返回多个promise
let promise = arr.map((item,index) = > {
    arr.forEach((item, index) => {
        return getInfo(item, index)
    })
})
// 对返回的promise数组进行操作
Peomise.all(promise).then((allData) => {
    arr.forEach((item, index) => {
        // ......
    })
})
登录后复制

本文来自 js教程 栏目,欢迎学习!  

以上是解决for循环中异步请求顺序不一致的问题的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

解决kernel_security_check_failure蓝屏的17种方法 解决kernel_security_check_failure蓝屏的17种方法 Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure(内核检查失败)就是一个比较常见的停止代码类型,可蓝屏错误出现不管是什么原因都让很多的有用户们十分的苦恼,下面就让本站来为用户们来仔细的介绍一下17种解决方法吧。kernel_security_check_failure蓝屏的17种解决方法方法1:移除全部外部设备当您使用的任何外部设备与您的Windows版本不兼容时,则可能会发生Kernelsecuritycheckfailure蓝屏错误。为此,您需要在尝试重新启动计算机之前拔下全部外部设备。

PHP后端API开发中的如何处理并行和异步请求 PHP后端API开发中的如何处理并行和异步请求 Jun 17, 2023 pm 04:22 PM

随着网络应用的不断发展和变化,处理并行和异步请求已经成为PHP后端API开发中的一个重要主题。在传统的PHP应用中,请求是同步进行的,即一个请求在收到响应之前会一直等待,这会影响应用的响应速度和性能。但是,PHP现在已经拥有了并行和异步请求处理的能力,这些功能让我们可以更好地处理大量并发请求,提高应用的响应速度和性能。本文将讨论PHP后端API开发中的如何处

Win10如何卸载Skype for Business?电脑上的skype怎么彻底卸载方法 Win10如何卸载Skype for Business?电脑上的skype怎么彻底卸载方法 Feb 13, 2024 pm 12:30 PM

Win10skype可以卸载吗是很多用户们都想知道的一个问题,因为很多的用户们发现自己电脑上的默认程序上有这个应用,担心删除后会影响到系统的运行,下面就让本站来为用户们来仔细的介绍一下Win10如何卸载SkypeforBusiness吧。Win10如何卸载SkypeforBusiness1、在电脑桌面点击Windows图标,再点击设置图标进入。2、点击“应用”。3、在搜索框中输入“Skype”,点击选中找到的结果。4、点击“卸载”。5

解决Vue异步请求数据实时更新问题 解决Vue异步请求数据实时更新问题 Jun 30, 2023 pm 02:31 PM

Vue开发中如何解决异步请求数据的实时更新问题随着前端技术的发展,越来越多的网页应用都采用了异步请求数据的方式,以提高用户体验和页面性能。而在Vue开发中,如何解决异步请求数据的实时更新问题是一个关键的挑战。实时更新是指当异步请求的数据发生变化时,页面能够自动更新以展示最新的数据。在Vue中,有多种解决方案可以实现异步数据的实时更新。一、使用Vue的响应式机

JavaScript怎么用for求n的阶乘 JavaScript怎么用for求n的阶乘 Dec 08, 2021 pm 06:04 PM

用for求n阶乘的方法:1、使用“for (var i=1;i

foreach和for循环的区别是什么 foreach和for循环的区别是什么 Jan 05, 2023 pm 04:26 PM

区别:1、for通过索引来循环遍历每一个数据元素,而forEach通过JS底层程序来循环遍历数组的数据元素;2、for可以通过break关键词来终止循环的执行,而forEach不可以;3、for可以通过控制循环变量的数值来控制循环的执行,而forEach不行;4、for在循环外可以调用循环变量,而forEach在循环外不能调用循环变量;5、for的执行效率要高于forEach。

Vue中使用axios发送异步请求方法详解 Vue中使用axios发送异步请求方法详解 Jun 09, 2023 pm 04:04 PM

Vue是一款极其流行的前端框架,而Axios则是目前比较受欢迎的前端异步请求库,本文将详细介绍在Vue中如何使用Axios发送异步请求。Axios的安装和使用Axios是一个基于Promise的HTTP客户端,用于发送异步请求。我们可以通过npm将其安装:npminstallaxios然后我们可以在Vue中使用它,首先需要在组件中导入:importax

UniApp报错:'xxx'异步请求失败的解决方案 UniApp报错:'xxx'异步请求失败的解决方案 Nov 25, 2023 am 08:59 AM

UniApp报错:'xxx'异步请求失败的解决方案随着移动应用的快速发展,UniApp作为跨平台开发框架,越来越得到开发者的青睐。然而,像任何其他的技术框架一样,UniApp也存在一些潜在的问题,其中之一就是异步请求失败的报错问题。本文将介绍UniApp报错:“'xxx'异步请求失败”的一些常见原因,并提供一些解决方案。首先,我们需要了解什么是异步请求。在U

See all articles