用jQuery AJAX和Promises替换同步Prototype.js AJAX

时间:2016-04-18 16:53:47

标签: jquery ajax promise prototypejs

我有一个prototype.js同步ajax调用,我需要使用Promises转换为jQuery ajax调用。

这基本上就是我的开始。

// synchronous prototype.js ajax function
function isSwitchOn() {

    var isOn = false;

    var myAjax = new Ajax.Request('checkSwitch', {
        method: 'post', asynchronous: false, evalJSON: 'force', requestHeaders: { Accept: 'application/json' },

        onSuccess: function (transport) {
            if (isValidResponse(transport)) {
                if (transport.responseJSON.result == "switched") {
                    isOn = true;
                }
            }
        },
        onFailure: function (oXHR, oJson) { handleFailure(oXHR.status); },
        onException: function (request, err) { handleException(request, err); }
    });

    return isOn;
}

//calling function snippet
do {
    // complex stuff that affects switch status and manages UI
} while (!isSwitchOn());

这是我的转换尝试,但它没有在循环评估之前设置switchStateOn。

function handleSwitchResponse(response) {
    if (isValidResponse(response)) {
        if (response.result == "switched") {
            return true;
        }
    }    
    return false;
}

function checkSwitch() {
    return getJson('checkSwitch')
               .then( function (data) { return data; })
               .fail( function (oXHR, textStatus, errorThrown) { handleException(oXHR, textStatus + ": " + errorThrown.message); });
}

function getJson(url) {
    return jQuery.ajax(url, { method: 'POST', dataType: 'json' });
}

//calling function snippet
var switchStateOn;
do {
    // complex stuff that affects switch status and manages UI

    checkSwitch().then(function (response) { switchStateOn = handleSwitchResponse(response); });
} while (!switchStateOn);

任何人都可以使用jQuery AJAX和Promises来帮助设计这个吗?

0 个答案:

没有答案