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');
});