ECMAScript5 [].reduce()
2024-09-30 02:42:16
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);
}
}
最新文章
- 2016-WAS
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
- win7下装ubuntu14.04双系统
- Windows多网卡上网设置
- MVC开发经验总结
- svn黄色叹号解决
- gtk+-3.21.4 static build step in windows XP
- ASP.NET MVC几种找不到资源的问题解决办法
- Java调用外部程序常用算法和封装类
- 项目开发中封装一个BarButtonItem类别-很实用
- Visual Studio 2015 RC Downloads
- Kth Smallest Element in Unsorted Array
- 二进制搜索方法C++通用执行
- 18.如何自我Struts2它Struts2标签和综合汇总文章有点早
- 2_ROS学习
- Servlet之Session处理
- 使用 ASP.NET Core MVC 创建 Web API(五)
- Spring Boot 2.x(九):遇到跨域不再慌
- Mybatis-PageHelper
- PYTHON 实现的微信跳一跳【辅助工具】仅作学习