Rxjs 里 subscribeToArray 工具函数的详细分析
工具 函数 Rxjs 详细分析
2023-09-14 09:04:00 时间
subscribeToArray 函数体的逻辑:它的实质是一个函数:
该函数接收一个 array 作为输入参数,遍历这个 array,将其每个元素,作为另一个匿名函数执行的一部分。该匿名函数体内,将 array 的元素作为 subscriber 订阅函数的输入:
对上述代码进行一点增强:
<html>
<script>
const subscribeToArray = (array) => (subscriber) => {
for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {
subscriber.next(array[i]);
}
subscriber.complete();
};
const aInput = [1,2,3,4];
const newFunction = subscribeToArray(aInput);
debugger;
</script>
</html>
在调试器里查看 newFunction,发现第12行代码调用 subscribeToArray,输入的 aInput,已经维护到新函数的Closure(闭包)里了:
这个 newFunction 应该怎么消费呢?
<html>
<script>
const subscribeToArray = (array) => (subscriber) => {
for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {
subscriber.next(array[i]);
}
subscriber.complete();
};
const aInput = [1,2,3,4];
const newFunction = subscribeToArray(aInput);
const subscriber = {
closed: false
};
subscriber.next = (data) => console.log("next: " + data);
subscriber.complete = () => console.log("completed!");
debugger;
newFunction(subscriber);
</script>
</html>
输出:
回到 fromArray.js 的 subscribeToArray,也就不难理解其逻辑了:
直到应用程序代码调用 Observable 的 subscribe 方法时,才会变量 input 数组,用 subscribe 的 next 方法依次处理 input 数组的元素。在 CombineLatest Operator 的例子里,input 元素就是 Observable 对象的组合。
更多Jerry的原创文章,尽在:“汪子熙”:
相关文章
- 拒绝拖延,提高效率从一款高效的笔记工具开始
- 公用的工具类不应该有公共的构造函数
- 使用 Chrome 开发者工具分析 SAP UI5 应用的 JavaScript 代码执行性能瓶颈
- 使用 Chrome 开发者工具的 Memory 标签页分析内存泄漏问题
- Atitit.文件搜索工具 attilax 总结
- 使用Chrome开发者工具研究JavaScript里函数的原生实现
- NgRx createSelector 工具函数的三个类型参数
- 【Android 逆向】Android 逆向通用工具开发 ( adb forward 网络端口重定向命令 | PC 端逆向程序主函数分析 )
- 【Android 逆向】Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )
- 【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )
- 程序猿必备的开发和測试工具汇总
- 转载:大厂5G python自动化测试面试必会 | 匿名函数lambda & 递归函数 & 函数属性和注解 & 函数式编程工具