Le 23/04/2013 15:27, Dean Landolt a écrit :


        In any case, considering that an object with a 'then'
        function is a promise is a recipe for confusion. Promise/A+
        folks asked for and are happy about it. The rest of the
        webdevs who aren't aware of this subtle non-intuitive rule
        will have a very hard time when, for whatever reason, they
        have a 'then' function in a resolve value and their code
        really behaves in a way they don't understand.


    I agree it's a recipe for confusion. But the weight of legacy
    code (growing by the day) may be too much to bear.
    What about the weight of legacy non-promise code using "then"? The
    best thing we can say now is that we know nothing about it and
    it'd be wise to wait until more data on "then" is available. The
    Casper example should at least worry us. I hope it will be the
    browser vendors choice.


    Hopefully not -- it's really very simple for Promises/A+ libs to
    add `then` to the Promise prototype.
    Aren't they already doing that? I don't understand your point here.


No, DOMFutures ships with this OOTB. If there were an es Promise or Future builtin I suspect there would be a lot of pressure to specify it with `then` on the prototoype to make its instances compatible with existing Promises/A+ libs. That's the crushing weight of legacy I'm referring to.

What occurred to me is that it really is just a few lines of code for each of these Promises/A+ libs to add to tack on the prototype `then` without having to muddy the spec. In hindsight this seems obvious. I wonder why DOMFutures didn't go this route? It may not be too late.
Until it is widely deployed, *everything* is possible. What browsers will choose/accept to implement will be the standard. And indeed, I believe existing libs could adapt easily to platform Futures even if these don't follow Promise/A+.


        I don't think in the entire platform there is a precedent of
        doing this (maybe for a good reason?). We'll see what web
        browsers end up implementing.



    IMHO __proto__ is one precedent -- and we know how that's going :P
    Once again, __proto__ is not a good comparison. It's already in
    the platform. As far as promises are concerned, the platform has
    exactly no obligation to follow the current Future or an
    alternative that'll emerge tomorrow; no obligation to follow
    Promise/A+ or whatever else.


You said "I don't think in the entire platform there is a precedent of doing this". I assume by "this" you meant using a forgeable string key that could lead to confusion. That is what we were discussing, right? If so I think __proto__ is a great example. And again, I think it helps make your (*our*) point :)
Oh I see. Then yes, in that sense __proto__ is a relevant comparison (sorry for the misunderstanding). Though, the confusion for __proto__ is less likely because first, most people were aware of it (which really isn't clear for promises/A+) and __ is the sign for both "be careful" and "it's unlikely to collide with something else" which isn't the case for "then".

David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to