Harmony - proxies | asynchronous

Dmitry Soshnikov dmitry.soshnikov at gmail.com
Fri Sep 2 08:58:50 PDT 2011

Besides, IIRC, there is a module for Node called node-fibers, which 
introduces possibility of `yiled` for V8 (though, the implementation 
differs from (standard) `yield` from SpiderMonkey).

And for the topic starter -- in ES6 it's planned to standardize `yield` 
feature which will allow to have asynchronous programming in the 
synchronous style. Regarding proxies (and actually just simple getters) 
you may use just a prefix `yield` which suspends the control execution 
until the asyncronious result will be ready, and then continuous the 
execution. E.g.:

Object.defineProperty(foo, "bar", {
   get: function () {
     var r = yield setTimeout(getBar, 1000);
     return r;

var x = 10;
var y = yield foo.bar + x;
// other code

But, I think some less verbose syntactic construct than manual `yield` 
every time (with wrapping all this in a special "task") would be nice to 

Transformation on a source code at compile time (with replacing e.g. 
`wait foo.bar` with a callback) seems very elegant solution.


On 02.09.2011 19:46, Juan Ignacio Dopazo wrote:
> There is already a Node module that uses Proxies as a way of enforcing 
> promises:
> https://github.com/sam-mccall/node-plate
> It allows your to write:
> var pfs = plate(fs);
> pfs.writeFile('/etc/passwd.bak', pfs.readFile('/etc/passwd'));
> pfs.end(function(err) { if(err) throw err; console.log("It's saved"); });
> Juan
> On Fri, Sep 2, 2011 at 12:02 PM, Xavier MONTILLET 
> <xavierm02.net at gmail.com <mailto:xavierm02.net at gmail.com>> wrote:
>     Hi,
>     I'm just a lambda JavaScript programmer who loves building black boxes
>     with the smallest APIs possible and a couple of hours ago, I found out
>     Proxys existed and since then, I've been watching talks and reading
>     articles about them. And it sure looks awesome.
>     But there's one thing I didn't get:
>     Will we be able to use them to provide an API for remote objects?
>     Because it looks it it can but it lacks the asynchronous aspect.
>     This guys says it will:
>     http://code.google.com/p/es-lab/wiki/Talks#Changes_to_ECMAScript,_Part_2:_Harmony_Highlights_-_proxies_and
>     But when I look at the draf (
>     http://wiki.ecmascript.org/doku.php?id=harmony:proxies#an_eventual_reference_proxy
>     ), the only sentence I see "asynchronous" in is this one:
>     "This example shows how to implement a proxy that represents an
>     eventual reference, enforcing asynchronous property access on an
>     object."
>     And in the code below, the only thing that might do something
>     asynchronous is this:
>     get: function(receiver, name) {
>         return promiseFor(function(){return obj[name];});
>       },
>     And it sounds more like it returns some value and *then* gets the
>     real one.
>     And this promiseFor function appears nowhere else on the page...
>     And if it can not be asynchronous, it (probably) can't be used in
>     Node.JS which, apart from the browser, will more likely become one of
>     the most used JavaScript environment.
>     But the thing is that if you provide both a synchronous and an
>     asynchronous APIs, it might become a big mess...
>     The the best solution seems to be to provide only an asynchronous API
>     with a callback given as argument to get, set, has, hasOwn and so on.
>     But then is gets quite strange because you do:
>     var value = proxy.property;
>     and it does
>     var value = handler.get( proxy, 'property' );
>     but if get is asynchronous this can not work...
>     Or then it has to be some strange C++ code and we loose all the
>     interest of having asynchronous requests in the first place.
>     Thank you in advance for your potential future response.
>     ------------------------------------------------------------
>     To put it in a nutshell: Will Proxys support asynchronous requests?
>     ------------------------------------------------------------
>     If my question is dumb and / or pointless, I'm sorry for wasting
>     your time.
>     _______________________________________________
>     es-discuss mailing list
>     es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>     https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20110902/04934d5a/attachment-0001.html>

More information about the es-discuss mailing list