小编syn*_*omy的帖子

重用jQuery.post()/ jQuery.Deferred()对象

我正在寻找的最简单的例子是:

var messageLoader = $.post("api/user/messages", {api:data})

messageLoader.done(function(data){
   //do something 
});
Run Code Online (Sandbox Code Playgroud)

这种方法非常出色,但只有一次.如果我想更新数据,我必须重新定义所有内容.

我似乎无法找到任何延迟对象的调用,让我重新启动它.即messageLoader.redo()理想情况下,它会重新执行POST请求,然后调用相同的"完成"处理程序,而不必重新定义它.

我可以将它全部放在一个函数中,然后再简单地调用该函数,但这不是我正在寻找的,因为我还想要这样做:

var messageLoader = $.post("api/user/messages", {api:data})
var friendRequestLoader = $.post("api/user/friendrequests", {api:data})

$.when(messagesLoader, friendRequestLoader)
    .done(function (messages, friendRequests) {
        // update display of messages and friend requests
        // attach Handlers
    });

$("#updateMessages").click(function(){
    messageLoader.redo() // This doesn't exist
})
Run Code Online (Sandbox Code Playgroud)

我们的想法是点击$("#updateMessages")会重新执行该请求,然后$.when()处理程序将使用新messageLoader数据和原始friendRequestLoader数据.

我已经查看了类似这样的文档,但没有找到任何东西.也许这里有人知道它是否存在,或者是一种完成同样事情的方法.

javascript ajax jquery deferred

7
推荐指数
1
解决办法
1545
查看次数

标签 统计

ajax ×1

deferred ×1

javascript ×1

jquery ×1