【发布时间】:2023-03-08 18:53:02
【问题描述】:
我正在寻找的最简单的例子是:
var messageLoader = $.post("api/user/messages", {api:data})
messageLoader.done(function(data){
//do something
});
这很好用,但只有一次。如果我想更新数据,我必须重新定义一切。
我似乎找不到任何让我重新启动它的延迟对象的调用。即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
})
这个想法是单击$("#updateMessages") 将重新执行该请求,然后$.when() 处理程序将使用新的messageLoader 数据和原始的friendRequestLoader 数据。
我在文档中查看了类似的内容,但没有找到任何内容。也许这里有人知道它是否存在,或者知道完成同样事情的方法。
【问题讨论】:
-
只需创建一个执行您想要的操作的函数,然后再次调用它?
标签: javascript jquery ajax deferred