Reflection to know if executed within a generator/async ?

Andrea Giammarchi andrea.giammarchi at gmail.com
Thu Dec 3 19:06:49 UTC 2015


Ron it's not about being ambiguous, it's actually the opposite: know when
returning directly a value would actually break "outside expectations"

So my idea is to indeed offer either a sync or an async result and not both
(in  terms of same execution context/scope/logic)

On Thu, Dec 3, 2015 at 5:48 PM, Ron Buckton <Ron.Buckton at microsoft.com>
wrote:

> I agree with Bradley, and kindly refer you to this oft referenced blog
> post regarding synchronous and asynchronous APIs:
> http://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/
>
>
>
> Ron
>
>
>
>
>
>
> *From: *Bradley Meck
> *Sent: *Thursday, December 3, 2015 8:57 AM
> *To: *Andrea Giammarchi
> *Cc: *es-discuss at mozilla.org
> *Subject: *Re: Reflection to know if executed within a generator/async ?
>
>
>
>
> I am against any semantics that expose how a function is used. I struggle
> and many others do when this occurs in CSS (display varies depending on
> container). I would also be hesitant to encourage things acting both
> synchronously and asynchronously depending on how they are used. Changing
> temporal behavior depending on usage is asking for race conditions.
>
> On Thu, Dec 3, 2015 at 10:37 AM, Andrea Giammarchi <
> andrea.giammarchi at gmail.com> wrote:
>
>> Uhm... you never closed that "will this value be .... thing and I'm
>> expecting a "dary" answer like in few emails but my whole point is
>> consuming  an API in different scenarios: held or synchronous.
>>
>> You can always create an API that always returns a Promise, that's
>> nothing new for the language, but can you decide if it's he case to
>> absolutely return a promise 'cause any other value would cause trouble
>> within that generator or async function?
>>
>> On Thu, Dec 3, 2015 at 4:15 PM, John Lenz <concavelenz at gmail.com> wrote:
>>
>>> I don't think being executed in a generator or async function is a good
>>> signal that a promise should be returned (something needs to "await" the
>>> promise).   The async function is really a chain of synchronous code split
>>> at various points, during the synchronous parts the code would still need
>>> to be synchronous and returning a promise would be wrong.   The real data
>>> you need is "will this value be consumed by an 'await' expression or be
>>> used to resolve a Promise and, in the general case,  that is not something
>>> that can't be answered at the time your example function is executing.
>>>
>>> On Thu, Dec 3, 2015 at 4:15 AM, Andrea Giammarchi <
>>> andrea.giammarchi at gmail.com> wrote:
>>>
>>>> Hi there,
>>>>   just writing down some thoughts about being able to understand if a
>>>> method/function has been  executed within a generator/async and is being
>>>> yielded/awaited.
>>>>
>>>> Rationale: API that would like to behave synchronously in some case,
>>>> returning Promises in other cases.
>>>>
>>>> Example:
>>>>
>>>> ```js
>>>> function fileGetContent(fileName) {
>>>>   // random example
>>>>   if (held) {
>>>>     return fetch(fileName).then((r)=>r.text());
>>>>   } else {
>>>>     var xhr = new XMLHttpRequest;
>>>>     xhr.open('GET', fileName, false);
>>>>     xhr.send(null);
>>>>     return xhr.responseText;
>>>>   }
>>>> }
>>>> ```
>>>>
>>>> Above example will virtually return always the same type and it could
>>>> work inside a generator or an  async function as long as it's being held.
>>>>
>>>> Does any of this make sense? Is it worth exploring this pattern?
>>>>
>>>> Thanks for any sort of thought.
>>>>
>>>> Best  Regards
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>> <https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7c884c0e07599b45dd22f108d2fc02d478%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=pYbuVGySrXg%2fl7oapX7JO3YVMIsZpEmbdykdXYgGKIs%3d>
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> <https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fmail.mozilla.org%2flistinfo%2fes-discuss&data=01%7c01%7cron.buckton%40microsoft.com%7c884c0e07599b45dd22f108d2fc02d478%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=pYbuVGySrXg%2fl7oapX7JO3YVMIsZpEmbdykdXYgGKIs%3d>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20151203/9d0e967c/attachment.html>


More information about the es-discuss mailing list