Skip to content

Tracking bug and discussion for asynchronous iteration in Node.js core #15709

Activity

  1. added
    discussIssues opened for discussion and feedback.
    feature requestIssues requesting new Node.js features.
    promisesIssues and PRs related to ECMAScript promises.
    readlineIssues and PRs related to the built-in readline module.
    streamIssues and PRs related to Node.js streams.
    on Oct 1, 2017
  2. vsemozhetbyt commented on Oct 1, 2017

    @vsemozhetbyt
    ContributorAuthor

    Personally, I would look forward to a core way to read and process big files line by line in async/await functions without complicated Promise chains in event callbacks.

    I understand this is not the main purpose of streams, but everybody loves fs or http anyway, so this is just a reminder to not forget readline.

  3. changed the title [-]Traking bug and discussion for asynchronous iteration in Node.js core[/-] [+]Tracking bug and discussion for asynchronous iteration in Node.js core[/+] on Oct 1, 2017
  4. Fishrock123 commented on Oct 5, 2017

    @Fishrock123
    Contributor

    I'm not super familiar with async iterators but this seems like something we'd definitely want to investigate further.

  5. benjamingr commented on Nov 13, 2017

    @benjamingr
    Member

    AsyncIterator landed in Chrome and V9 will likely ship support. @nodejs/streams @nodejs/collaborators

    I would love it if this issue made it to TSC agenda and discussed at the next meeting - I think adding experimental Symbol.asyncIterator support to streams behind a flag while explaining they don't perform as well as streams at the moment might be a good idea.

  6. calvinmetcalf commented on Nov 13, 2017

    @calvinmetcalf
    Contributor

    I don't know if I'll have time for a pull request but if somebody wants to use the module I wrote as the basis for adding them to streams you have my permission to do so without worrying about the license.

  7. mcollina commented on Nov 13, 2017

    @mcollina
    SponsorMember

    I don't think that placing them under a flag is helpful. I would just emit an experimental warning when using them for the first time.

  8. benjamingr commented on Nov 13, 2017

    @benjamingr
    Member

    @mcollina you're right, an experimental morning should be sufficient.

  9. mcollina commented on Dec 18, 2017

    @mcollina
    SponsorMember

    I'm working on an implementation of this, and it is not clear when asyncIterator.throw(e)  is called.

  10. jasnell commented on Dec 18, 2017

    @jasnell
    Member

    I've been playing with this a little bit in the fs promises implementation, specifically in a promise-based readFile() implementation and I have to say that using the async iterator works rather well. I'll be pushing the code up to a branch a bit later today.

  11. 2 remaining items

  12. rektide commented on Mar 2, 2018

    @rektide

    Hey. I want to chip in for any Node.js users like myself, playing along at home, about how to use async generators in Node.js: that information was a little scattered, and I wasn't sure what the status was myself.

    • Node versions 8.3 and above seem to have async iteration support! (Wow! That's way more support than I thought!)
    • All versions of Node that do support async iteration require --harmony_async_iteration to get the feature. edit: Node v10 and up has async iteration on by default, Node v8.3+ requires --harmony_async_iteration.
    • I tested with this sample script:
    async function * answers(){
    	yield Promise.resolve(42);
    };
    (async function universe(){
    	for await (var answer of answers()){
    		console.log(answer)
    	}
    })()
    

    Thank you Node team and V8 implementer Caitlin Potter. This is such a great improvement to JavaScript.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussIssues opened for discussion and feedback.feature requestIssues requesting new Node.js features.promisesIssues and PRs related to ECMAScript promises.readlineIssues and PRs related to the built-in readline module.streamIssues and PRs related to Node.js streams.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions