2

我想转

$(button).on("click",function(e) {
    $.ajax(url, function(data) {
        handle(data);
    });
});

进入:

$(button).on("click")
.then(function(e) {
    return $.ajax(url);
})
.then(function(data) {
    return handle(data);
});

但是一个promise只能解决一次,而click事件会一次又一次地触发,这使得事情变得不可能。

任何优雅的解决方案?

4

1 回答 1

0

为了只发出一次 ajax 请求,无论按钮被调用多少次,您都可以引用一个 promise。您可以重复调用 promise 方法,如果事务已经完成,它们将立即解决。

var promise;
function sendAjaxRequest() {
     return promise || promise = $.ajax(url);
}

$(button).on("click", function(){
    sendAjaxRequest().then(function(data) {
       handle(data);
    }
});
于 2013-10-25T03:35:37.067 回答