我敢肯定对此有一个非常简单的解释。这有什么区别: function barber($type){ echo "You wanted a $type haircut, no problem\n"; } call_user_func('barber', "mushroom"); call_user_func('barber', "shave"); ...,这(有什么好处?): function barber($type){ echo "You wanted a $type haircut, no problem\n"; } barber('mushroom'); barber('shave');
是否有一个很好的简单方法来延迟函数调用,同时让线程继续执行? 例如 public void foo() { // Do stuff! // Delayed call to bar() after x number of ms // Do more Stuff } public void bar() { // Only execute once foo has finished } 我知道可以通过使用计时器和事件处理程序来实现,但是我想知道是否存在标准的c#方式来实现? 如果有人好奇,那么这样做的原因是foo()和bar()处于不同的(单个)类中,在特殊情况下,我需要彼此调用。问题在于这是在初始化时完成的,因此foo需要调用bar,而bar需要一个正在创建的foo类的实例...因此,延迟调用bar()以确保foo被完全实例化。差一点的不良设计! 编辑 我将在建议下处理有关不良设计的要点!长期以来,我一直以为我可以改善系统,但是,这种令人讨厌的情况只有在抛出异常时才会发生,在其他所有时间,两个单例都很好地共存。我认为我不会用讨厌的异步模式搞乱,而是要重构其中一个类的初始化。
我有很多这样的: function addEventsAndStuff() { // bla bla } addEventsAndStuff(); function sendStuffToServer() { // send stuff // get HTML in response // replace DOM // add events: addEventsAndStuff(); } 由于DOM已更改,因此重新添加事件是必要的,因此以前附加的事件不见了。由于它们也必须一开始就附加(duh),因此它们具有很好的DRY功能。 此设置没有任何问题(或存在吗?),但是我可以对其进行一些平滑处理吗?我想创建该addEventsAndStuff()函数并立即调用它,因此它看起来并不那么业余。 以下两个都以语法错误响应: function addEventsAndStuff() { alert('oele'); }(); (function addEventsAndStuff() { alert('oele'); })(); 有没有人?