ECMAScript5 [].reduce()

Posted 诗酒明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()的主要内容,如果未能解决你的问题,请参考以下文章

ECMAScript5 之Array

JS的内建函数reduce

JavaScript归并方法reduce()和reduceRight()

在JavaScript函数式编程里使用Map和Reduce方法

ECMAScript5之StrictMode

对象和数组的 ECMAScript5 深拷贝