2009-07-29 65 views
1

我想打电话给fillContent后来称为beginEditingQuestion减慢代码直到ajax函数结束?

fillContent(cid, "questions"); 
beginEditingQuestion(qid); 

的问题是,直到fillContent所有Ajax是做我不能响beginEfitingQuestion。有没有一种优雅的方式来延迟代码?我能想到的唯一想法是创建一个全新的函数fillContentAndBeginEditingQuestion,其中我将fillContent复制并粘贴到新函数中,并在beginEditingQuestion中添加最终的ajax调用。这对我来说看起来不太优雅,我想在其他上下文中重用fillContent。我该怎么办?

回答

3

您可以使fillContent取回调参数,并在完成后调用回调函数。基本上,你只需添加回调();到最后的fillContent体内。通过这种方式,你会写这样的事情,并在结尾处执行的传递函数:

fillContent (cid, "questions", function() { beginEditingQuestion (qid); }); 
0

这听起来像你需要改变“fillContent”,以便它的一个参数是一个回调函数,在AJAX返回时调用。

3

我不认为你想“慢”,而是想在下一件作品开始之前等待某件事完成。

在很多语言中使用的模式是使用事件。

概念:

您注册一个“DoneFillingContent”事件的兴趣,他说请致电beginEditingQueue()当事件到达。

fillContent具有向所有相关方发出事件的可分辨性。他并没有意识到beginEditingQueue()的作用,它只是完成工作的一部分。

在最简单的模式版本中,您只允许一个回调函数。