[英]How to use jQuery .When .done
我试图在另一个函数完成后运行一个函数。
$.when(saveCanvas(canvas)).done(setWallPaper());
每个函数都可以自行运行,但是当我运行上面的代码时,它只运行第一个函数。
我需要改变什么?
根据对另一个SO问题的评论, $.when
期望延迟对象作为参数。 如果您没有传递任何内容,将立即调用回调。
setWallPaper()
似乎不起作用,因为它实际上是在saveCancas(canvas)
之前运行的吗? saveCanvas()
实际上并不是一个延迟对象 , when
它期望它时。 要使其成为延迟对象,请添加dfr = $.Deferred();
到你的saveCanvas()
函数的开头并return dfr.promise();
到最后。 查看此SO答案以获取更多详细信息。
function saveCanvas(canvas)
{
dfr = $.Deferred();
//Your code
return dfr.promise();
}
阅读更多: http : //api.jquery.com/jQuery.when/
另一个猜测:
$.when(saveCanvas(canvas)).done(function(){
setWallPaper()
});
现在回想一下,这似乎是它如何与jQuery一起工作:
function f1() { alert("function one"); } $.when( f1() ).done(function() { alert("function 1 is done running function two"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
注意:这与我在问题中发布的方法相同,所以基本上应该有效。 虽然jQuery可能在过去3年中发生了变化。 最有可能的是调用函数的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.