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);
}
}

最新文章

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

热门文章

  1. ubuntu 14.04 源码编译postgresql
  2. HTML文档设置标记
  3. oratop
  4. Bluefish
  5. Windows7获取、更换桌面背景,C#
  6. IDEA JavaSE环境配置
  7. 解决win64无法添加curl扩展的问题
  8. freebsd自动获取ip地址
  9. Java静态方法不能被覆盖
  10. SM2-DE