`
xieye
  • 浏览: 830782 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

node的流对象学习(读流,斐波那契数列实现)

阅读更多
学习node的流对象,拿一个数列练手。

全部代码如下:

/**
 * 用流来实现斐波那契数列
 * 
 * @author yyy
 */
var stream=require('stream');
var util=require('util');

// 构造方法
// n是最大个数
function StreamChild(n)
{
    this.a=0;
    this.b=1;
    this.n = n;
    stream.Readable.call(this);
}
util.inherits(StreamChild, stream.Readable );

// 覆盖父类的方法
StreamChild.prototype._read = function(){
    this.push('f(0):'+ this.a.toString());
    this.push('f(1):'+  this.b.toString());
    
    for(let i=2;i<= this.n+1-2;i++) {
      [this.a, this.b] = [this.b, this.a+this.b];
      this.push( `f(${i}):${this.b}`  );
    }
    this.push(null);
};

var child=new StreamChild(10);

// 下面设置监听器,注意:同时也开始执行读事件!这也是流对象的特点!
child.on('data',(data)=>{
   console.log(data.toString());
});
child.on('end',()=>{
   console.log('end');
});


下面是输出结果:
f(0):0
f(1):1
f(2):1
f(3):2
f(4):3
f(5):5
f(6):8
f(7):13
f(8):21
f(9):34
end


说明,还有第2种写法
把最后的on(‘data’)和on('end')语句去除,用一句话代替。
child.pipe(process.stdout);


也可以正确执行,请读者推测输出有什么不同。

读流和写流可以管道串联起来执行,可参见
读流和写流学习
0
0
分享到:
评论

相关推荐

    数据结构 斐波那契数列

    根据给定的信息,本文将详细解释如何通过使用循环队列来构建斐波那契数列的一个特殊变体,即4阶斐波那契序列,并确保序列的第n项小于等于200,而第n+1项大于200。 ### 1. 4阶斐波那契数列定义 在标准的斐波那契...

    js代码-Generator实现斐波那契数列

    在JavaScript中,我们可以使用Generator函数来优雅地实现斐波那契数列。 Generator函数是ES6引入的一种新的函数类型,它可以生成一个可迭代的对象,允许我们在执行过程中暂停和恢复。这种特性非常适合处理斐波那契...

    js代码-斐波那契数列

    理解并能有效地实现斐波那契数列是编程基础的重要组成部分,因为它涉及到基础数据类型、控制流(如循环和条件语句)、函数以及优化策略。学习这些概念有助于提升JavaScript编程技能,并对其他编程语言的理解也有所...

    ControlHubTest:REST API,用于获取斐波那契数列的特定数字

    斐波那契数列是一个经典的数学概念,在编程领域中经常被用作教学示例或算法练习。这个名为"ControlHubTest"的项目提供了一个REST API,允许用户通过HTTP请求获取斐波那契数列的特定数字。REST(Representational ...

    NodeJSLesson6:学习 node.js

    在"NodeJSLesson6:学习 node.js"这个项目中,我们将探讨如何使用Node.js来实现一个简单的功能,即根据用户输入返回斐波那契数列的特定位置上的数值。斐波那契数列是一个经典的数学概念,其定义是:每个数都是前两个...

    从零开始学习Node.js系列教程四:多页面实现的数学运算示例

    而 '/factorial' 路径则对应计算阶乘的函数,'/fibonacci' 用来计算斐波那契数列的值,'/mult' 路径则对应执行两个数的乘法运算。 数值传递在 Node.js 中通常通过 URL 参数实现。在 htutil.js 模块中,通过 exports...

    fibonacci_prime

    `fibonacci_prime`项目可能就是这样一个实现,用于找出斐波那契数列中所有的素数。 【描述】"访问实时网站:这句描述可能意味着该项目提供了一个在线平台,用户可以实时查看或测试斐波那契素数的生成结果。下载源...

    斐波那契

    在JavaScript中实现斐波那契数列,有多种方法,每种都有其特点和适用场景。以下是一些常见的实现方式: 1. **递归**: 递归是最直观的实现方式,但效率较低,因为它会进行大量的重复计算。基本代码如下: ```...

    常见数据结构与算法的Python实现及学习笔记.zip

    12. **动态规划**:用于解决最优化问题,通过构建子问题的最优解来找到全局最优解,如斐波那契数列、背包问题等。 13. **贪心算法**:每次做出局部最优选择,希望最终得到全局最优解,如Prim最小生成树算法和...

    fib-nodejs:使用node.js和npm的斐波那契序列

    JS中的斐波那契数列 对于整数n = 0、1、2 ...,实现一个返回第n个斐波那契数f(n)的函数 前端 其中包含一个简单的演示,使您可以比较斐波那契序列的时间,该时间是由直接递归计算出来的,并结合使用递归和备忘录来...

    约瑟夫环的三种解法.zip

    以上就是约瑟夫环问题的三种解法:数组解法、链表解法和斐波那契数列解法。每种方法都有其适用场景,理解并掌握这些解法有助于提升对数据结构和算法的理解,同时对于解决类似问题提供思路。在实际应用中,我们需要...

    Node.js中child_process实现多进程

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让 JavaScript 能够在服务器上执行,从而实现服务器端的脚本语言。Node.js 最显著的特点是它的异步 I/O 和事件驱动的架构,使得它非常适合于构建高并发...

    从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例

    - `/fibonacci/:n` 接口使用异步计算斐波那契数列的第`n`项。 - `/factorial/:n` 接口计算`n`的阶乘。 - `/mult/:a/:b` 接口计算两个数`a`和`b`的乘积。 - `/square/:a` 接口计算`a`的平方。 每个接口都接收...

    从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例

    - 'fibonacci'路径下执行斐波那契数列计算。 - 'mult'路径下执行乘法计算。 Express框架中对于视图渲染和错误处理,本教程介绍了以下知识点: - 设置视图引擎:Express框架允许设置不同的模板引擎进行视图渲染,...

    JavaSourceCodePracticeSolveProblems:Java源代码。 阶乘,斐波那契,二叉搜索树实现和素数-Search source code

    在给定的“JavaSourceCodePracticeSolveProblems”压缩包中,包含了多个Java源代码文件,主要涉及了几个经典的算法问题:阶乘计算、斐波那契数列、二叉搜索树(BST)的实现以及素数检测。这些都是计算机科学和编程...

    基于C++的几个递归函数运用(.cpp)

    2. **斐波那契数列**:递归也可用于生成斐波那契数列,每个数字是前两个数字的和。但需要注意的是,由于重复计算,直接递归实现效率较低: ```cpp int fibonacci(int n) { if (n ) { // 基本情况 return n; } ...

    java实现递归调用

    在Java中,递归常用于解决需要重复执行相同任务但每次处理的数据不同的问题,例如遍历树形结构、计算阶乘、求解斐波那契数列等。本篇文章将详细介绍如何使用Java实现递归调用来遍历一棵树,并结合SQL代码进行说明。 ...

    JavaEE技面试常见问题.doc

    - 递归算法:递归是函数调用自身的过程,常用于解决分治策略的问题,如斐波那契数列、树的遍历等。使用场合通常涉及解决问题的子问题与原问题具有相同结构的情况。 5. 设计模式: - 工厂模式:提供一个创建对象的...

Global site tag (gtag.js) - Google Analytics