JavaScript native Promise() without callback

前端 未结 2 1507
轻奢々
轻奢々 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); }
        }
    };
    
    0 讨论(0)
  • 2020-12-11 22:03

    The execution flow would be a little different, but basically work the same way:

    function some(resolve, reject) {
        resolve();
    }
    
    var promise = new Promise(some);
    
    promise.then(/*  callback cool things   */);
    

    Instead of some getting passed the promise itself, it gets passed the resolve and reject functions. So, the dependency is just the other way round.

    0 讨论(0)
提交回复
热议问题