我正在尝试理解 jQuery 的Deferred
,但是尽管有示例,但我无法实现我想要做的事情。
所以,我想异步调用 2 个函数,当两个函数都结束时,再调用另一个函数。
这是我的代码
function1();
function2();
function3();
function1()
并对function2()
我的 ASP.NET 应用程序进行 ajax 调用,它们完美地工作。它们必须在function3()
开始之前结束。
我正在阅读并再次阅读文档,但 function3() 不会等待其他两个文件的结束。你能提供我的一些样品以便我理解Deferred
吗?我真的需要他们来完成我项目的重要部分。
非常感谢。
奖金问题
我读过有关deferred... 可以在某些元素.when
中写入类似function1() running,然后function2() running等...?<div>
更新
function1()
有关and的更多详细信息function2()
:它们非常相似,这是它们的主体:
function function1() {
return $.ajax({
url : "@Url.Action("MyMethod", "MyController")",
contentType : "application/json; charset=utf-8",
dataType : "json"
}).done(function(data) {
$.each(data, function(index) {
pushDatas(data[index]);
})
}).fail(function (result) {
alert("function1failed");
});
}
function pushDatas(data)
{
if(!($.inArray(data, loadedDatas) !== -1)) {
loadedDatas.push(data);
}
}
更新 2
这些函数的调用方式如下:
<script type="text/javascript">
$(document).ready(function () {
//some others asynchrounous functions
$.when(function1(), function2()).done(function3("test"));
}
...
</script>