LoginSignup
6
6

More than 5 years have passed since last update.

Promiseを外からresolveする

Last updated at Posted at 2015-08-19

TypeScript

aaaaaaaaaの10秒後にbbbbbbbbbが出力されます↓


class DeferredPromise{
    promise:Promise<any>
    resolve:Function
    reject:Function
    constructor(){
        this.promise = new Promise((_resolve, _reject)=> {
            this.resolve = _resolve
            this.reject = _reject
        })
    }
}

var deferred = new DeferredPromise()

setTimeout(()=> {
    deferred.resolve()
}, 10000)

Promise.resolve().then(()=> {
    console.log('aaaaaaaaa')
}).then(()=> {
    return deferred.promise
}).then(()=> {
    console.log('bbbbbbbbb')
})

JavaScript

ちなみにコンパイル後↓


var DeferredPromise = (function () {
      function DeferredPromise() {
          var _this = this;
          this.promise = new Promise(function (_resolve, _reject) {
              _this.resolve = _resolve;
              _this.reject = _reject;
          });
      }
      return DeferredPromise;
})();
var deferred = new DeferredPromise();
setTimeout(function () {
      deferred.resolve();
}, 10000);
Promise.resolve().then(function () {
      console.log('aaaaaaaaa');
}).then(function () {
      return deferred.promise;
}).then(function () {
      console.log('bbbbbbbbb');
});

参考にした記事
よく見たらPromiseの本にも書いてあった

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6