Reflection to know if executed within a generator/async ?

Claude Pache claude.pache at gmail.com
Thu Dec 3 17:23:22 UTC 2015


How would you detect that the following call to your `fileGetContent` function should return a Promise?

```js
function oldSchool() {
    return fileGetContent("foo").then(function (c) {
        // ....
    })
}
```

—Claude


> Le 3 déc. 2015 à 13:15, Andrea Giammarchi <andrea.giammarchi at gmail.com> a écrit :
> 
> 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



More information about the es-discuss mailing list