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 have.

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

Dmitry.

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....@gmail.com <mailto:xavierm02....@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@mozilla.org <mailto:es-discuss@mozilla.org>
    https://mail.mozilla.org/listinfo/es-discuss



_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to