繁体   English   中英

如何使用jQuery。当.done

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM