Augusto Moura (2018-04-12T21:02:45.000Z)
Also it can be already be implemented in user land with high orders
functions:

``` js
const sleep = promised(function (time) {
  window.setTimeout(() => this.resolve(), time);
});
```

A simple implementation of a `promised` helper

``` js
const promised = (fn) => (...args) => {
  let target;
  const promise = new Promise((resolve, reject) => {
    target = { resolve, reject };
  });
  fn.apply(target, args);
  return promise;
}
```


Em qui, 12 de abr de 2018 às 16:48, Mike Samuel <mikesamuel at gmail.com>
escreveu:

> This seems like it could be done with decorators per
> https://github.com/tc39/proposal-decorators without introducing a new
> keyword.
>
> @promises function sleep(...) {
>   ...
> }
>
>
>
> On Thu, Apr 12, 2018 at 12:07 PM, Luiz Felipe Frazão Gonçalves <
> luizfelipefrazaogoncalves at gmail.com> wrote:
>
>> *One new proposal for EcmaScript.*
>> Promised Functions
>>
>> Like async/await, the promised functions would be preceded by a keyword.
>> In the case, promised, it would change the default behavior of the
>> function, making it behave as a promise.
>>
>> I will use as an example a classic sleep function:
>>
>> function sleep(forHowLong) {
>>   return new Promise((resolve, reject) => {
>>     setTimeout(function() {
>>       resolve();
>>
>>       /**       * For reject:       *        * reject(Error('Some error'));       */
>>     }, forHowLong);
>>   });
>> }
>>
>> I think to avoid the huge amount of callbacks, there should be a syntax
>> similar to this:
>>
>> promised function sleep(forHowLong) {
>>   setTimeout(function() {
>>     this.resolve(); // could even create a keyword like "resolve"
>>
>>     /**     * For reject:     *      * this.reject(Error('Some error'));     */
>>   }, forHowLong);
>> }
>>
>> Note that the hypothetical keyword "promised" before the function
>> statement makes it act as a promise.
>>
>> Just a crazy idea I had. :)
>>
>> _______________________________________________
>> es-discuss mailing list
>> 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
>
-- 
Augusto Moura
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180412/ca47c10f/attachment.html>
augusto.borgesm at gmail.com (2018-04-12T21:22:16.908Z)
Also it can be already be implemented in user land with high orders
functions:

``` js
const sleep = promised(function (time) {
  window.setTimeout(() => this.resolve(), time);
});
```

A simple implementation of a `promised` helper

``` js
const promised = (fn) => (...args) => {
  let target;
  const promise = new Promise((resolve, reject) => {
    target = { resolve, reject };
  });
  fn.apply(target, args);
  return promise;
}
```