javascript - ajax调用中的厄运金字塔

标签 javascript ajax

我有一个 javascript 应用程序,我想在其中进行 ajax 调用,并且如果需要,根据之前的 ajax 响应进行其他 ajax 调用。我成功地用一个漂亮的厄运金字塔做到了这一点:

    function startParentArray(id) {
    getIssueDetail(id).success(function(data) {
    var source = $("#parenttemplate").html();
    var tpl = Handlebars.compile(source);
    if(data.issue.parent) {
        nextparent = data.issue.parent.id;
        getIssueDetail(nextparent).success(function(data1) {
            $("#parenttable").append(tpl(data1.issue));
            if(data1.issue.parent) {
                nextparent = data1.issue.parent.id;
                getIssueDetail(nextparent).success(function(data2) {
                    $("#parenttable").append(tpl(data2.issue));
                    if(data2.issue.parent) {
                        nextparent = data2.issue.parent.id;
                        getIssueDetail(nextparent).success(function(data3) {
                            $("#parenttable").append(tpl(data3.issue));
                            if(data3.issue.parent) {
                                nextparent = data3.issue.parent.id;
                                getIssueDetail(nextparent).success(function(data4) {
                                    $("#parenttable").append(tpl(data4.issue));
                                    if(data4.issue.parent){
                                        nextparent = data4.issue.parent.id;
                                        getIssueDetail(nextparent).success(function(data5) {
                                            $("#parenttable").append(tpl(data5.issue));
                                        });
                                    }
                                });
                            }
                        });
                    }
                });
            }
        });
    }
});

}

getIssueDetail 返回 ajax 响应。有没有其他更漂亮的方法来做到这一点,例如在 while 循环中?

最佳答案

promise 就是你正在寻找的,我正在考虑this one 。但 jQuery 也有一个 ($.Deferred 即使它没有实现所谓的 A+ promises

这来自 kris kowal 的 q

On the first pass, promises can mitigate the “Pyramid of Doom”: the situation where code marches to the right faster than it marches forward.

关于javascript - ajax调用中的厄运金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140719/

相关文章:

javascript - 我的 if 语句 "between"给出了错误的结果

javascript - 动态更改链接的 KML 文件中多边形的颜色

javascript - Pubnub 在更改 channel 时收到重复的消息

javascript - 跨源资源共享 (CORS) 概念

javascript - AJAX 数据与 d3.csv 数据可用性

javascript - 如何在HTML5中的不同位置打印数组的动态内容

javascript - 单选按钮上的 jQuery .change()

javascript - socket.io 在连接时发出

javascript - laravel 如何使用ajax获取数据库值?

c# - MVC ajax 发布到 Controller 操作方法