博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redux compose()方法解析:
阅读量:7103 次
发布时间:2019-06-28

本文共 1372 字,大约阅读时间需要 4 分钟。

compose()主要是利用了数组的reduce()方法来实现迭代:第二个函数的执行结果,作为第一个函数的参数。

/**此处是源代码 * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ function compose(...funcs) {    if (funcs.length === 0) {        return arg => arg    }    if (funcs.length === 1) {        return funcs[0]    }    return funcs.reduce((a, b) => (...args) => a(b(...args)))}复制代码

分析如下:

function compose(...funcs) {    //reduce 数组元素的迭代,每次迭代都返回一个函数    //第二个函数的执行结果,作为第一个函数的参数    return funcs.reduce((a, b) => (...args) => a(b(...args)))}function f1(a){    return a+1;}function f2(a){    return a*10;}function f3(a){    return a-1;}var compo=compose(f1,f2,f3);console.log(compo);//Functionconsole.log(compo(3));//21复制代码

compose(f1,f2,f3)

//第一次迭代后的返回值(...args) => f1(f2(...args))  等价于function fn(...args) {    return f1(f2(...args));}复制代码
//第二次迭代后的返回值// return (...args) => fn(f3(...args))   等价于// return (...args) => f1(f2(f3(...args)));    等价于// function fn(f3(...args)) {//     return f1(f2(f3(...args)));// }复制代码

备注: 函数数组里面,最后一个函数可以有多个参数,其它函数只能有一个参数。

转载地址:http://nzyhl.baihongyu.com/

你可能感兴趣的文章
在阿里云上开放Redis默认的6379端口
查看>>
护照申办证明
查看>>
搜索引擎优化最为关键的七个地方
查看>>
sudo详解
查看>>
nginx启动 停止 重启等 管理脚本
查看>>
ubuntu12.04 安装BeautifulSoup遇到的问题
查看>>
Java删除文件夹和文件
查看>>
docker学习系列一:初识docker
查看>>
如何修改ssh的端口号?
查看>>
我的友情链接
查看>>
mysql binlog配置
查看>>
使用正则表达式匹配嵌套Html标签
查看>>
书摘---创业36条军规8:资本的五个问题
查看>>
arduino 配eclipse的博客,有空看下
查看>>
linux下用mail命令发送邮件
查看>>
MongoDB复制集部署和基本管理
查看>>
单链表面试题(二)从头到尾打印单链表
查看>>
strcmp()
查看>>
CET,UTC,GMT,CST几种常见时间概述
查看>>
开源数字媒体资产管理系统:Razuna安装方法
查看>>