jquery $.when $.then 问题

标签 jquery jquery-deferred

我尝试将 $.when 与 ajax 调用一起使用,其中的调用并不总是被调用,我该如何实现这一点。我一直在尝试破解它

var renderThis;
$.when($.post("/blabla", function(data){
            renderThis = data;
        }),
        function(){
            if(another){
                return $.post("/blabla");
            }
            else{
                return true;
            }
        })
        .then(function(){
            render(renderThis)
        });

但我看到的是 $.then() 不是以延迟方式调用,而是立即调用。

有什么想法吗?

最佳答案

.when 需要函数结果而不是函数引用。 .when 的第二个参数是函数引用。尝试使用立即执行的函数:

$.when(
    $.post("/blabla"),
    (function() {
        if(another){
            return $.post("/blabla");
        }
        else{
            return true;
        }
    })())
.then(
    function(data1, data2){
        render(data1);
    });

如您所见,我还整合了第一个 success 函数,以便在 when 上进行处理,而不是将其与 .post 调用内联提供。

关于jquery $.when $.then 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787614/

相关文章:

javascript - AJAX 请求在 IE8 和 IE9 中不起作用

javascript - 将 jQuery Deferred 与包含 $.each 的多个 ajax 一起使用

javascript - 当一组 deferred 中的一个失败时如何处理

jquery - 后处理 jQuery ajax 请求结果的最简单方法?

jquery - 以编程方式创建 jQuery Promise 的链式序列

jquery - Angular 中的 jQuery.when() 相当于什么

javascript - 为什么在应用类时需要 setTimeout 才能让我的过渡生效?

jquery 仅在phonegap 中工作index.html

javascript - 如何使用 jQuery 将事件附加到动态 HTML 元素?

javascript - jqplot:如果我有两个饼图,我可以使具有相同标签的每个楔形具有相同的颜色吗?