"As long as the block of code inside the if fits in one line, you can also use this shorthand syntax (note the lack of curly brackets):"
My definition of "one line" invalidates this statement. However, I believe "one line" is pretty objective. Javascript will execute anything until it reaches a semi-colon. The following is valid Javascript.
if (foo)
for (i = 0; i < a.length; ++i)
if (i === 5)
console.log (a[i]);
Other than the obvious nitpicking, great article! It clears up a couple of confusing aspects of Javascript.
It's just just inline non-blocking right? When people say "not async" I think blocking, but it's actually async in that you can have other operations happen in between execution of lines of code. Like if something that would traditionally be async in node executes, you don't have to wrap a callback in a function, yet it's still async, kind of like yield statements in python Twisted. If you think it isn't async and it is you're going to be in a world of hurt some day.
If something in node is async, you have to wrap it up with _wrapAsync, else meteor explodes. Once it is wrapped, it is no longer async, your code will block until the (internal) callback is called, then it will continue.
It is exactly, not like a 'yield' in Twisted, that is the same in node, but in Meteor (server side) nearly everything is synchronous.
I don't remember what my test was, but I tried it, it doesn't block. Try to create something that you think doesn't block to freeze node while using fiber, it won't block, that's what makes fiber awesome. Fiber doesn't block. If you think it's blocking when it isn't it can kick your ass because you will assume incorrect order of events. It's just inline non-blocking.
If I'm wrong I would be happy to be corrected about this.
EDIT:
A perfect way to test this would be to loop through a bunch of HTTP requests that can take varying lengths of time to return and print when they finish, you're going to see they finish out of order. You'd have to write the loop such that each http request fires indepently of each other, which is tough in fiber, but a settimeout could do it (Checkout the sleep example in the fiber readme). If those http requests blocked other ones you'd have a pretty shitty situation, but they don't. And so if you assumed those HTTP requests completed in the same order you made them you would be in trouble.
I didn't know what Meteor is and the link didn't explain.
FROM: https://www.meteor.com/Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.
To be fair, this link is on a site called "Discover Meteor", whose entire purpose is to elucidate the Meteor framework. It's not unreasonable for the site to assume that you got there from somewhere that already explained what Meteor was, such as the front page, rather than a random HN direct link.
It's worth noting that Meteor is a unique framework, because of the live templating engine and data binding, that allow you to design and prototype real-time applications very quickly.
My definition of "one line" invalidates this statement. However, I believe "one line" is pretty objective. Javascript will execute anything until it reaches a semi-colon. The following is valid Javascript.
Other than the obvious nitpicking, great article! It clears up a couple of confusing aspects of Javascript.