2013-03-06 61 views
6

我有一个函数,调用其他对象,当我的应用程序被加载时,获取参数和函数应该等待所有的对象调用,然后与承诺模式执行,我可以确保所有的对象被加载,但我不知道计数的对象,我不想要设置加载超时。我不谈论具体的技术,如jquery,并需要算法。实现承诺模式

伪代码:

 function loadWidget(id){ 
     list.push(id); 
     //here I should ensure all Widget is loaded 


      } 

在其他应用程序我叫

app.loadWidget.add(widget1.id); 
    . 
    . 
    .  
    app.loadWidget.add(widget2.id); 
+5

哇!这是一个长期的判决。 – fsw 2013-03-06 11:41:37

+0

你的问题需要一些证明 - 阅读我的朋友,尤其是它的语法。 – kiwicomb123 2016-12-22 04:48:10

回答

12

如果你不想就绪型解决方案,而是要实现所有的自己,那么读报纸引用的算法在维基百科文章中:Futures and promisesPromises/APromises/A+的规格。

为了确保您做得对,请阅读Domenic Denicola的You're Missing the Point of Promises并查看Compliances tests for Promises/A+

另一方面,如果您认为不值得重新发明轮子(除非是为了教育 - 在这种情况下尽可能多地重新发明轮子),那么请看RSVP.js,一个提供组织异步代码的工具的轻量级库。 RSVP.js例如由Ember.js使用。