Ajax中的Promise和callback函数,什么时候成功发生?

时间:2018-07-24 04:38:05

标签: javascript jquery ajax

现在我有这样的代码:

$.ajax({
            url: apiUrl + valueToCheck,
            data: {
                format: 'json'
            },
            error: function () {
            },
            dataType: 'json',
            success: function (data) {

                checkAgainstDBHelperWH(data, valueToCheck);
            },
            type: 'GET'
        });

如果我没记错的话,checkAgainstDBHelperWH被称为回调函数。一旦服务器针对此特定的HTTP / ajax请求发送回响应,该函数就会执行。

我想尝试编写类似于以下内容的内容,但我不知道会有什么影响,甚至还不合逻辑:

var request =  $.ajax({
            url: apiUrl + valueToCheck,
            data: {
                format: 'json'
            },
            error: function () {
            },
            dataType: 'json',
            success: function (data) {

                checkAgainstDBHelperWH(data, valueToCheck);
            },
            type: 'GET'
        })

arrayOfPromises.push(request);


$.when.apply(null, arrayOfPromises).done(function () {

   //...some javascript here
 });

我想了解在回调函数.done(function ()完成之后是否触发了checkAgainstDBHelperWH?还是我上面试图写的内容与ajax的工作方式不一致?

谢谢!

1 个答案:

答案 0 :(得分:0)

我对其进行了测试,只有在该函数(在本例中为'checkAgainstDBHelperWH')未调用ajax的情况下,您的代码才起作用。 如果要等待内部ajax进程完成,请使用then()并返回内部ajax。

var ajaxs =
    $.get("xxx").then(function() {
        return $.get("yyy").done(function() {
        });
    });

这里是jsfiddle

我不确定这种方法是否通用。