有人可以清楚地解释jQuery.when()和deferred.then()的工作原理吗?

我正在开发一个Web应用程序,我需要加载几个文件$ .ajax。 ()。then()中我发现了一些有趣的东西。

当我没有任何特殊的事情处理请求返回的数据时,它很好用,例如:

$.when(
    $.getScript('js/script1.js'),
    $.getScript('js/script2.js')
).then(function(){
    // Do whatever I want once both scripts are loaded...
});

如果运行良好,当我有这样一个单一的Ajax请求:

$.when(
    $.ajax('xml/myxml.xml')
).then(function(data){
    // Here I can work with data like I would with a regular ajax request
    alert($(data).find('mynode').text());
})

但是,如果我尝试以下方法,我无法实现它的工作:

$.when(
    $.ajax('xml/myxml.xml'),
    $.getScript('js/script.js')
).then(function(data){
    // But here, I can't access $(data).find('mynode')...
})

我读了延期对象页面,但其中大部分对我来说太技术了,而且我无法理解当我使用$ .when()。then()加载时我应该如何获得我的ajax数据脚本和来自多个来源的数据。

所以如果有人能够帮助我找出如何在上面的测试用例中使用我的ajax数据,那就太棒了! 如果在此期间有人能够以比官方jQuery文档更容易理解的方式解释延迟对象,那将是非常棒的!

谢谢!


显然,对于每个延迟对象,至少如果它是一个Ajax请求, $.when传递一个像[ "success", statusText, jqXHR ]这样的参数给回调[ "success", statusText, jqXHR ]jqXHR是一个代表XMLHttpRequest的对象(更多关于$.ajax文档的内容)。 所以以下应该工作:

$.when(
    $.ajax('xml/myxml.xml'),
    $.getScript('js/script.js')
).then(function(a){
    $(a[2].responseText).find('mynode');
});

请参阅$.when文档中的第一个示例。

一般来说,关于延迟对象,这个问题可能有帮助。

链接地址: http://www.djcxy.com/p/10329.html

上一篇: Can someone explain clearly how jQuery.when() and deferred.then() works?

下一篇: Core Audio and the Phantom Device ID