【发布时间】:2014-05-26 03:47:33
【问题描述】:
这是有问题的代码行:
$.when(dashboard.update.call(this)).then(dashboard.updateCompleted);
问题是,dashboard.update 调用了另外一系列 5 个左右的函数。 dashboard.update 是在完成调用这些函数之后还是在这些函数实际完成之后完成?
我问的原因是因为似乎在dashboard.update 调用的函数完成之前调用了dashboard.updateCompleted。有没有办法解决这个问题?
【问题讨论】:
-
这取决于这些函数是否使用异步执行.. 即它们是否有ajax请求等
-
您必须向我们展示
dashboard.update()的作用(它是否具有异步操作)以及它是否返回仅在异步操作完成时才解析的承诺。$.when().then()只能在dashboard.update()内部执行异步操作,前提是dashboard.update()返回一个仅在异步操作完成时才解析的承诺。而且,如果这样做,您也不需要$.when(),因为您可以直接使用dashboard.update.call(this).then(...)。 -
我不确定dashboard.update里面的函数是否是异步的……不过它们是一系列的ajax请求。
-
@Hubrid 见帖子。谢谢
-
Welp,AJAX 的名字中确实有异步......所以是的,这些函数确实使用异步执行。
标签: javascript jquery callback jquery-deferred