javascript - 在链中进行回调?

标签 javascript jquery ajax callback

我们可以在这样的链中进行回调吗?

Widget.update(...).onUpdate(function(data){
   console.log('updated');
});

当前代码,

var Gateway = {};

Gateway.put = function(url, data, callback) {

    $.ajax({
        type: "POST",
        dataType: "xml",
        url: url,
        data: data,
        async: true,
        success: function (returndata,textStatus, jqXHR) {
            callback(returndata);
        }
    });
};


var Plugin = function() {};

Plugin.prototype = {

    update : function(options, callback) {
        /// other stuff
        Gateway.put($url, $data, function(data){
            callback(data);
        }

        return this;
    }
}

使用情况,

    var Widget = new Plugin();

    Widget.put({
        button: options.button
    }, function(data){
        console.log('updated');
    });

但理想情况下,

Widget.update(...).onUpdate(function(data){
       console.log('updated');
    });

编辑:

位于jsfiddle .

最佳答案

您尝试做的事情将会起作用,但是您需要传递回调来更新

Widget.update(yourOptions, function(data){
       console.log('updated');
    });

您还可以直接返回 ajax 请求并链接到它

var Gateway = {};

Gateway.put = function(url, data) {
    return $.ajax({
        type: "POST",
        dataType: "xml",
        url: url,
        data: data,
        async: true
    });
};


var Plugin = function() {};

Plugin.prototype = {

    update : function(options) {
        /// other stuff
        return Gateway.put($url, $data);
    }
}

var Widget = new Plugin();

Widget.update(yourOptions).done(function() {
  console.log('updated');
});

关于javascript - 在链中进行回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114460/

相关文章:

javascript - 动态添加元素,但 jquery onClick 函数不起作用(SimpleBox)

javascript - 如何在输入字段以外的元素上触发焦点?

html - 将内容加载到 div (jQuery)、更改 url 并从侧边栏导航进行控制

javascript - php无法获取ajax发送的数据

ssl - ajax 脚本和 tls

javascript - 渲染组件时 useEffect 不触发

javascript - 用css3实现Windows 8 Tile "Click"动画

php - 如何将 jquery 的 $.post() 转换为纯 JavaScript?

jQuery 和 CSS 可滚动然后延长固定标题

javascript - 缩短表格中的数据数量