Sha256: c40c79492d2c85efe9ba07f75dc98dfab5e62f1d2e1345a5933ab4a1d931cefe

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

/*globals qq*/
qq.Promise = function() {
    "use strict";

    var successValue, failureValue,
        successCallback, failureCallback, doneCallback,
        state = 0;

    return {
        then: function(onSuccess, onFailure) {
            if (state === 0) {
                successCallback = onSuccess;
                failureCallback = onFailure;
            }
            else if (state === -1 && onFailure) {
                onFailure(failureValue);
            }
            else if (onSuccess) {
                onSuccess(successValue);
            }

            return this;
        },

        done: function(callback) {
            if (state === 0) {
                doneCallback = callback;
            }
            else {
                callback();
            }

            return this;
        },

        success: function(val) {
            state = 1;
            successValue = val;

            if (successCallback) {
                successCallback(val);
            }

            if(doneCallback) {
                doneCallback();
            }

            return this;
        },

        failure: function(val) {
            state = -1;
            failureValue = val;

            if (failureCallback) {
                failureCallback(val);
            }

            if(doneCallback) {
                doneCallback();
            }

            return this;
        }
    };
};

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fine_uploader-3.5.0 vendor/assets/javascripts/fine_uploader/promise.js