我想调用fillContent,然后调用beginEditingQuestion
fillContent(cid, "questions");
beginEditingQuestion(qid);
问题是,在fillContent中的所有ajax完成之前,我无法执行beginEfitingQuestion。是否有一种优雅的方式来延迟代码?我能想到的唯一想法是创建一个全新的函数fillContentAndBeginEditingQuestion,我将fillContent复制并粘贴到新函数中,并在最终的ajax调用中添加beginEditingQuestion。这对我来说似乎不太优雅,我想在其他上下文中重用fillContent。我该怎么办?
答案 0 :(得分:3)
你可以让fillContent接受一个回调参数,让它在完成后调用回调。基本上,你只需要添加callback();最后进入fillContent的主体。通过这种方式,你可以编写类似这样的东西,并在最后执行传递的函数:
fillContent (cid, "questions", function () { beginEditingQuestion (qid); });
答案 1 :(得分:3)
我认为你不想“慢”,而是想在下一件工作开始之前等待一些事情完成。
在许多语言中使用的模式是使用事件。
概念:
您注册了对“DoneFillingContent”事件的兴趣,并说当事件到达时请调用beginEditingQueue()。
fillContent具有向所有相关方发出事件的可复制性。他没有意识到beginEditingQueue()的作用,它只是完成时要完成的一项工作。
在最简单的模式版本中,您只需要一个回调函数。
答案 2 :(得分:0)
听起来你需要更改“fillContent”,以便它的一个参数是一个在AJAX返回时调用的回调函数。