angularjs, ngResource 在工厂和网络调用

angularjs, ngResource in a factory and network calls

我正在努力解决这个问题。我有一个使用 ngResouce 的简单工厂,如下所示:

   .factory('FooResource', function($resource) {

    var foo = $resource('/api/foo').get();

    return foo;

   })

在我的应用程序中,随着时间的推移,在多个地方,在多个控制器中,我使用 'FooResource.bar' 的值(其中 'bar' 在 get() 调用的数据中返回)。

对“/api/foo”的网络调用是否只会发生在我的 SPA 生命周期的第一个引用上?第一个引用是否需要 'FooResource.bar' 像承诺一样处理?

根据我在玩代码时看到的情况,第一个问题似乎是 'yes',第二个问题是 'no',但不知道一般情况下是否真的如此,或者只是发生了,因为它是我开发箱中的一个小测试应用程序。

编辑:我想我想要验证的一部分是我的想法,因为这是在一个工厂里,这是一个单一的,$resource 调用只会进行一次。是真的吗?

视情况而定,是的。你总是需要把它当作一个承诺来处理,你可以 enable/disable http 缓存。如果您将缓存设置为 true,则请求将发送一次并被缓存,直到缓存被清除。

您可以在此处的 $resource 文档中找到有关 $resource 缓存的更多信息:https://docs.angularjs.org/api/ngResource/service/$resource