减慢代码直到ajax功能结束?

时间:2009-07-29 21:17:27

标签: javascript jquery ajax

我想调用fillContent,然后调用beginEditingQuestion

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

问题是,在fillContent中的所有ajax完成之前,我无法执行beginEfitingQuestion。是否有一种优雅的方式来延迟代码?我能想到的唯一想法是创建一个全新的函数fillContentAndBeginEditingQuestion,我将fillContent复制并粘贴到新函数中,并在最终的ajax调用中添加beginEditingQuestion。这对我来说似乎不太优雅,我想在其他上下文中重用fillContent。我该怎么办?

3 个答案:

答案 0 :(得分:3)

你可以让fillContent接受一个回调参数,让它在完成后调用回调。基本上,你只需要添加callback();最后进入fillContent的主体。通过这种方式,你可以编写类似这样的东西,并在最后执行传递的函数:

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

答案 1 :(得分:3)

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

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

概念:

您注册了对“DoneFillingContent”事件的兴趣,并说当事件到达时请调用beginEditingQueue()。

fillContent具有向所有相关方发出事件的可复制性。他没有意识到beginEditingQueue()的作用,它只是完成时要完成的一项工作。

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

答案 2 :(得分:0)

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