9

Using ES2015, can I resolve a promise from the outside i.e. trigger a resolution after its creation?

Like

const promise = new Promise();
promise.then(() => foo());
promise.resolve(); // foo() gets executed
Lukas
  • 9,752
  • 15
  • 76
  • 120
  • 1
    *After* does not necessarily relate to *outside*? In general, no, and there's no need to. Also a `promise.resolve` method would definitely be an antipattern. – Bergi Jun 24 '16 at 12:06
  • 1
    You might want to have a look at [Promises for promises that are yet to be created](http://stackoverflow.com/q/37426037/1048572) – Bergi Jun 24 '16 at 12:09

2 Answers2

19

Yes you can.

let resolvePromise = null;
const promise = new Promise(resolve => resolvePromise = resolve);
promise.then(foo => console.log(foo));
resolvePromise('bar');
Yury Tarabanko
  • 44,270
  • 9
  • 84
  • 98
0

Sure we can. just take the reference of the function outside and call it. Since functions are object(which are stored as reference in variables) we can call resolve function from outside after taking its reference outside.

 var a;
    function b(){
        var c = new Promise( function(resolve, reject){
            a=resolve;
        });
        return c;
    }
    b().then((data) => {
    console.log(data);
    }
    );
    a("hai");
sdgluck
  • 24,894
  • 8
  • 75
  • 90
Ashutosh Sharma
  • 106
  • 1
  • 6