Skip to main content

ES6 Promise object

Simple es6 promise.

No support in IE11. Use jquery deferred instead of you want to support older browsers.

Typescript example using JQuery.Deferred

function SaveComment(msg) : JQueryDeferred<any> {
    var promise = new Promise(function(resolve, reject) {
        $.ajax({
            url: "/some/url",
            data: {
                Message: msg
            },
            method: "POST",
            dataType: "json",
            success: function (result) {
                // With data
                // dfd.resolve(result);
                
                // Without data
                resolve("Stuff worked!");
            },
            error: function (xhr, textStatus, errorThrown) {
                reject(Error("It broke"));
            }
        });
    });
    return promise;
}

Calling the SaveComment function

SaveComment("My comment")
    .then(function(result) {
        console.log(result); // "Stuff worked!"
    }, function(err) {
        console.log(err); // Error: "It broke"
    });