JavaScript native Promise() without callback

前端 未结 2 1522
轻奢々
轻奢々 2020-12-11 21:16

Look at this jQuery code:

var promise = new Deferred(),
    some;

some = function(promise) {
    // do cool things

    promise.resolve();
};

promise.then(         


        
2条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-11 21:49

    Here's a basic implementation that would preserve your application flow as-is.

    Do not use this in real life - you'd be missing out on throw safety (thanks to @BenjaminGruenbaum for the hint).

    var MyDeferred = function() {
        var _resolve,
            _reject,
            capturedPromise = new Promise(function(resolve, reject){
                _resolve = resolve;
                _reject  = reject;
            });
    
        return {
            'resolve' : _resolve,
            'reject'  : _reject,
            'then'    : function() { capturedPromise.then.apply(capturedPromise, arguments); },
            'catch'   : function() { capturedPromise.catch.apply(capturedPromise, arguments); }
        }
    };
    

提交回复
热议问题