javascript - jQuery promise 函数

标签 javascript jquery ajax

我正在尝试创建全局 ajax 处理程序。首先让我向您展示该功能

    var data = {
       test : 1
    }
    $.when( $.ajax({
        type: 'POST',
        url: ajaxurl,
        data : data,
        dataType: "json",
        success: function(data) {
            console.log('first me')
        }
        })
    ).then(function( data, textStatus, jqXHR ) {
        console.log('then me')
    });

这样就可以了。 和输出

首先是我

然后是我

但是我希望这个ajax成为一个函数 这就是我正在努力实现的方法。

    var data = {
       test : 1
    }
    $.when(globalAjax(data)).then(function( data, textStatus, jqXHR ) {
        console.log('then me')
    });
<小时/>
    function globalAjax(data) {
           $.ajax({
        type: 'POST',
        url: ajaxurl,
        data : data,
        dataType: "json",
        success: function(data) {
            console.log('first me')
        }
        })

    }

这样控制台会输出然后是我,然后是首先是我

如何要求在函数内等待ajax?

最佳答案

您需要在 globalAjax 中返回一个 promise :

function globalAjax(data) {
    return $.ajax({
        type: 'POST',
        url: ajaxurl,
        data : data,
        dataType: "json",
        success: function(data) {
            console.log('first me')
        }
    });
}

并且您不需要使用 $.when 函数:

globalAjax(data).then(function(data, ...) { ... });

$.when主要是等待两个或多个deferreds或promise完成。

关于javascript - jQuery promise 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459652/

相关文章:

java - 贾斯珀异常 : equal symbol expected

c# - 如何在 javaScript 中添加 C# 字符串作为文本弹出窗口

javascript - 如何获取数组并在数据源中使用

c# - 刷新下拉列表但保留旧的选定值 JSON

javascript - 如何在 Cordova 项目上重新加载页面?

javascript - 修复 Buggy JQuery 动画

javascript - 如何从 iframe 中的按钮获取响应代码

javascript - jquery 延迟对象回调未触发

javascript - 需要事件处理程序时切换类问题

javascript - 如何按月对一组对象进行分组?