【发布时间】:2013-10-07 21:01:04
【问题描述】:
我正在尝试理解 jQuery 的 Deferred,但尽管有示例,但我无法实现我想做的事情。
所以,我想异步调用 2 个函数,当两个函数都结束时,再调用另一个函数。
这是我的代码
function1();
function2();
function3();
function1() 和 function2() 对我的 ASP.NET 应用程序进行 ajax 调用,它们完美地工作。它们必须在function3() 开始之前结束。
我正在阅读并再次阅读 the documentation 但 function3() 不会等待另外两个结束。您能否提供我的一些样本以便我理解Deferred?我真的需要他们来完成我项目的重要部分。
非常感谢。
奖金问题
我读过.when deferred... 可以在<div> 元素中写入类似function1() running,然后function2() running em> 等等...?
更新
更多关于function1() 和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>
【问题讨论】:
-
对于您的奖金问题,您为什么要这样做?控制台是存放此类信息的好地方,除非您真的希望最终用户看到它。
-
嗯,目标是在中写入执行哪个函数,但是,我只需要在函数开头覆盖 div 的内容...我可能想要用 .when() 做一些困难的事情,而这真的很容易......
标签: javascript jquery asynchronous jquery-deferred deferred