javascript - 使用回调组织 Javascript

标签 javascript jquery

我正在尝试找出在我的网站上组织大量 AJAX 方法的最佳方式。问题是我想在收到每个回调后运行一堆回调。这是一个示例(假设每个方法异步运行):

Log_in_user
    if response received and call was successful
        get_user's_data
            if response received and call was successful
                alert user

希望现在问题已经清楚了。因为每个方法都是异步运行的,所以代码不会按顺序运行。相反,如果我想传递下一个函数作为回调运行,以便在执行它的函数之后运行,我将不得不将越来越多的回调传递给第一个函数,具体取决于我希望在每个函数之后发生多少事情异步方法返回。例如,在这种情况下,我必须将两个回调传递给 Log_in_user 函数 Log_in_user(get_user's_data,alert_user)。我在彼此之后运行的回调越多,我必须传递给原始 Log_in_user 函数的回调就越多。

是否有更模块化、更有条理的方式来做到这一点?

最佳答案

jQuery 1.5 为你做,你可以使用 .when()

例子:

function doAjax(){
    return $.get('/echo/html/');
}

function doMoreAjax(){
    return $.get('/echo/html/');
}

$.when( doAjax(), doMoreAjax() )
    .then(function(){
        console.log( 'I fire once BOTH ajax requests have completed!' );
    })
    .fail(function(){
        console.log( 'I fire if one or more requests failed.' );
    });

来自 jsfiddle

关于javascript - 使用回调组织 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5121002/

相关文章:

javascript - 检测所有图像何时加载到 Angular.js View 中

Javascript 或 jQuery 选择器从 `a` 然后使用类到很多 div

jQuery:加载和使用大型 XML 文件的最快方式

javascript - 数组元素的 child

javascript - 展示如何进行鼠标悬停的 svg 教程

php - 不使用 <form> 传递变量

javascript - jQuery 和 mysql 在点击时更新数据

javascript - AJAX 返回 200 成功但无法解析响应 JSON

javascript - 类型错误:generateKeyPairSync 不是函数

javascript - 浏览器从 url 中剥离编码的点字符