在第一个示例代码中,所有代码都正常工作 - 在每个页面路由更改时,我们检查一些条件($timeout
)并解决一个承诺:
在第二个示例中,我们将var rulesFactory
移至app.factory('rulesFactory')
,现在它可以运行一次:
JSFiddle App Factory sample code
是缓存吗?如何解决这个问题以提高代码的可重用性?
答案 0 :(得分:7)
rulesFactory
中的代码只运行过一次 - 第一次实例化服务本身。
第一次解决时会这样做:
第二次解决这个问题:
对此的修复是让rulesFactory返回一个函数,该函数将再次运行超时 - 每次都需要它。
另外,$ timeout本身会返回一个promise,所以你只需返回$ timeout: - )