ECMAScript5 [].reduce()
ECMAScript 5 的2个归并数组的方法,reduce() reduceRight()
两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
两个参数: 1、函数,一个在每一项上调用的函数和 2、(可选的)作为归并基础的初始值。
第一个函数handlerReduce()接受4个参数
1、前一个值 2、当前值 3、项的索引 4、数组对象
这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
利用reduce生成异步执行链function logInOrder(urls) {
// 远程读取所有URL textPromises保存了所有
const textPromises = urls.map(url => {
return fetch(url).then(response => response.text());
}); // 按次序输出 默认值为Promise.resolve()返回一个空的Promise对象 即第一次时的chain就是空的Promise对象
textPromises.reduce((chain, textPromise) => {
return chain.then(() => textPromise)
.then(text => console.log(text));
}, Promise.resolve());
}
空的Promise对象的then()函数执行下一个Promise对象的then(),然后then()再执行下一个Promise对象的then(),直到最后一个then()函数执行Promise.response或Promise.reject
async函数实现异步链
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);
}
}
ECMAScript5 [].reduce()的更多相关文章
- javascript 常用array类型方法
concat:基于当前数组中的所有项创建一个新数据,会创建当前数组一个副本,然后将接受到的参数放到数组末尾,最后返回新数组.如果没有参数,则复制当前数组并返回副本. slice:基于当前数组中一个或多 ...
- JS的内建函数reduce
@(js) reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实 ...
- ECMAScript5 Array新增方法
数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组(JavaScript 数组详解)虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Arr ...
- ECMAScript5
张鑫旭:ECMAScript5介绍 淘宝整理的es5-safe /********* It provides the following methods: Function.prototype.bin ...
- 在JavaScript函数式编程里使用Map和Reduce方法
所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工 ...
- ECMASCRIPT5新特性(转载)
Function 1: Object.create 这是一个很重要的改动,现在我们终于可以得到一个原型链干净的对象了.以前要创建一个类 function Cat(name) { this.name ...
- ECMAScript5新特性总结
虽然ECMAScript5早就成为标准推出来了,但之前因为一直用的是ECMAScript3,并且工作中总是要求兼容IE的低版本,所以用的比较少.如今市场上大多数浏览器都能兼容ECMAScript5(I ...
- ECMAScript5中新增的Array方法实例详解
ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.(注意兼容性) 在ES5中,一共有9个Array方法:http://kangax.githu ...
- JS中map、forEach、filter、reduce等Array新增方法的区别
数组在各个编程语言中的重要性不言而喻,但是在之前的JavaScript中数组虽然功能已经很强大,但操作方法并不完善,在ECMAScript5中做了适当的补充. Array.isArray(elemen ...
随机推荐
- IT兄弟连 JavaWeb教程 JSP内置对象经典面试题
1.请说明cookie.request.session.application的作用域和声明周期? 并说明它们适用与什么场景? request的生命周期是一次请求.可以用于JSP表单提交数据. ses ...
- Unrecogized font family ‘Ionicons’ 在ios上报错,android正常
解决方法: react-native link react-native-vector-icons 很多模块都需要link一下
- echarts相关属性设置(3)环状图
option = { grid: { left: '3%', top: '0%', // height: 500, right: '30%', containLabel: true, }, legen ...
- SLAM学习资料整理(转)
原文出处:http://www.cnblogs.com/wenhust/p/5942893.html 书籍: 1.必读经典 Thrun S, Burgard W, Fox D. <Probabi ...
- bzoj 5449 序列
https://www.lydsy.com/JudgeOnline/problem.php?id=5449 话说很早以前做过..算是IDA*的板子吧,一个简单的估价函数就可以过去了 %:pragma ...
- Glide加载图片的事例
//获取图片的url String url = resultsEntity.getUrl(); //判断获取的图片是否存在 if (resultsEntity.getItemHeight() > ...
- C. Functions again DP + 分类讨论
http://codeforces.com/contest/789/problem/C 首先按题目要求处理出dis数组. 那么对于任意一个区间,[L, R],是dis[L] - dis[L + 1] ...
- performSelector withObject afterDelay 在子线程上调用不运行
如题,这是最近在修改一个数据同步模块时发现的问题.整个数据同步的任务是在App启动后放在一个后台执行的线程中的,执行某个单条数据同步任务成功后,会使用 [self performSelector:(n ...
- 一次Socket通信联想到的Zookeeper源码实现
最近做一个短信平台,要接入短信网关平台,网关平台使用C,短信平台属于公司内部对外应用,使用Java开发,两边通信采用TCP/IP协议
- LessCss学习笔记
一.入门 1.LESSCSS是什么? LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编 ...