javascript - 扁平化深层嵌套的 ajax 回调的编程模式?

标签 javascript jquery ajax callback

我继承了 JavaScript 代码,其中 Ajax 处理程序的成功回调启动另一个 Ajax 调用,其中成功回调可能会也可能不会启动另一个 Ajax 调用。这导致了深度嵌套的匿名函数。也许有一种聪明的编程模式可以避免深度嵌套并且更干。此外,还有在整个函数中使用的内部变量 myVar1 和 myVar2 的问题。

jQuery.extend(Application.Model.prototype, {
    process: function() {
        var myVar1;
        // processing using myVar1;
        jQuery.ajax({
            url:myurl1,
            dataType:'json',
            success:function(data) {
                var myVar2;
                // process data using myVar1, set state of myVar2,
                // then send it back
                jQuery.ajax({
                    url:myurl2,
                    dataType:'json',
                    success:function(data) {
                        // do stuff with myVar1 and myVar2
                        if(!data.ok) {
                            jQuery.ajax({
                                url:myurl2,
                                dataType:'json',
                                success:mycallback
                            });
                        }
                        else {
                            mycallback(data);
                            }

                    }
                });
            }
        });
    }
});

最佳答案

不需要所有的回调都是匿名的和内联定义的,你可以在别处声明它们,在指定回调时只使用函数名。

关于javascript - 扁平化深层嵌套的 ajax 回调的编程模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564486/

相关文章:

jquery - 有 jQuery TextboxList 吗?

php - 在鼠标悬停时显示具有动态数据的 Div

javascript - 后续 AJAX 调用之间的最短时间

javascript - 如何使用 GitHub API 获取 GitHub 问题的数量?

javascript - 响应式 d3 漏斗

javascript - 如何确定用户是否订阅了 youtube channel

javascript - moment.js 和 moment-timezone-with-data.js 给出错误 Unknown Provider - Moment Provider

javascript - Chrome : XHR finished loading, 将 XHR 作为字符串返回?

javascript - 如何编写一个 JS 函数来在 <li> 类中查找 img 并将该图像作为 li 的 css 中的背景图像值?

javascript - 从 Jquery submit() 获取 HTMLFormElement 对象