Blame view

node_modules/from2/README.md 2.54 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  # from2 [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/from2&title=from2&description=hughsk/from2%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #
  
  `from2` is a high-level module for creating readable streams that properly handle backpressure.
  
  Convience wrapper for
  [readable-stream](http://github.com/isaacs/readable-stream)'s `ReadableStream`
  base class, with an API lifted from
  [from](http://github.com/dominictarr/from) and
  [through2](http://github.com/rvagg/through2).
  
  ## Usage ##
  
  [![from2](https://nodei.co/npm/from2.png?mini=true)](https://nodei.co/npm/from2)
  
  ### `stream = from2([opts], read)` ###
  
  Where `opts` are the options to pass on to the `ReadableStream` constructor,
  and `read(size, next)` is called when data is requested from the stream.
  
  * `size` is the recommended amount of data (in bytes) to retrieve.
  * `next(err)` should be called when you're ready to emit more data.
  
  For example, here's a readable stream that emits the contents of a given
  string:
  
  ``` javascript
  var from = require('from2')
  
  function fromString(string) {
    return from(function(size, next) {
      // if there's no more content
      // left in the string, close the stream.
      if (string.length <= 0) return next(null, null)
  
      // Pull in a new chunk of text,
      // removing it from the string.
      var chunk = string.slice(0, size)
      string = string.slice(size)
  
      // Emit "chunk" from the stream.
      next(null, chunk)
    })
  }
  
  // pipe "hello world" out
  // to stdout.
  fromString('hello world').pipe(process.stdout)
  ```
  
  ### `stream = from2.obj([opts], read)` ###
  
  Shorthand for `from2({ objectMode: true }, read)`.
  
  ### `createStream = from2.ctor([opts], read)` ###
  
  If you're creating similar streams in quick succession you can improve
  performance by generating a stream **constructor** that you can reuse instead
  of creating one-off streams on each call.
  
  Takes the same options as `from2`, instead returning a constructor which you
  can use to create new streams.
  
  ### See Also
  
  - [from2-array](https://github.com/binocarlos/from2-array) - Create a from2 stream based on an array of source values.
  - [from2-string](https://github.com/yoshuawuyts/from2-string) - Create a stream from a string. Sugary wrapper around from2.
  
  ## License ##
  
  MIT. See [LICENSE.md](http://github.com/hughsk/from2/blob/master/LICENSE.md) for details.