ES6 reduce 实现异步串行【初中级前端必会】

简介: ES6 reduce 实现异步串行【初中级前端必会】

前言

在之前的文章中,我们有讲过ES6reduce 的基本使用,相信看过童鞋应该对reduce的基本使用都能够完全的掌握,这篇文章可以说是上一篇的补充吧。主要来聊一聊如何使用reduce 优雅的实现异步串行。

何为异步

异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。

image.png

那么回到正题,如何实现一个异步串行?

异步串行

reduce构造连续 Promise 回调

reduce 是 es6 中的遍历叠加方法,在某些时候可以很方便的构造连续 Promise 回调,今天来看看咋玩的。

一个简单的例子:

假设现在有很多请求接口,他们之间存在依赖关系,必须等第一个请求结束后再去请求第二个,以此类推,这种需求该如何去实现 ?

let list = [
  'www.baidu.com?a=1',
  'www.baidu.com?b=1',
  'www.baidu.com?c=1',
    ...
]

其实这就是个异步串行的问题,简单的方法可以使用async await结合for循环:

async function fun(){
    for(let i=0;i<list.length;i++){
        await axios.get(list[i]);
    }
}

除了上面的方法,还可以使用reduce,

list.reduce((pre,next)=>{
    return pre.then(()=>axios.get(next));
},Promise.resolve())

Promise.resolve是reduce的初始值,第一次遍历的pre.then就是Promise.resolve.then();每次返回一个axios.get(next)的Promise,然后下次遍历的时候,用这个Promise后面接个then,用async分开写的更清楚些:

list.reduce(async (pre,next)=>{
    await pre;//等待上一个Promise
    return axios.get(next);//返回一个新的Promise
},Promise.resolve())

一个简单的异步串行就实现了,是不是很简洁。

相关文章
|
21天前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
8天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
2月前
|
JavaScript 前端开发 API
揭秘现代前端开发秘籍:Vue.js与ES6如何联手打造惊艳应用?
【8月更文挑战第30天】本文介绍如何从零开始使用Vue.js与ES6创建现代前端应用。首先,通过简要介绍Vue.js和ES6的新特性,使读者了解这两者为何能有效提升开发效率。接着,指导读者使用Vue CLI初始化项目,并展示如何运用ES6语法编写Vue组件。最后,通过运行项目验证组件功能,为后续开发打下基础。适用于希望快速入门Vue.js与ES6的前端开发者。
48 3
|
4月前
|
前端开发 JavaScript Java
【前端技术】 ES6 介绍及常用语法说明
【前端技术】 ES6 介绍及常用语法说明
40 4
|
3月前
|
前端开发
纯前端模拟后端接口异步获取数据
纯前端模拟后端接口异步获取数据
34 0
|
4月前
|
前端开发
前端React篇之React setState 调用的原理、React setState 调用之后发生了什么?是同步还是异步?
前端React篇之React setState 调用的原理、React setState 调用之后发生了什么?是同步还是异步?
|
5月前
|
前端开发
如何处理前端应用程序中的异步操作
前端异步操作常见方法包括回调函数、Promise 和 async/await。回调函数可能导致回调地狱,Promise 提供了更好的错误处理和链式调用,而 async/await 则基于 Promise,以同步风格处理异步任务,提高代码可读性。根据需求和喜好选择相应方法,以实现更可靠、易维护的代码。
|
5月前
|
JavaScript 前端开发
前端 JS 经典:ES6 和 CommonJs 用法
前端 JS 经典:ES6 和 CommonJs 用法
35 0
|
2月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
30 0
|
4月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
75 2
下一篇
无影云桌面