加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

角色服务有状态吗?

发布时间:2020-12-17 08:09:04 所属栏目:安全 来源:网络整理
导读:最近有一些同事和我正在讨论AngularJS服务是否应该有状态。我们提出了一些反对的论据,我想获得关于这个问题的更多想法和反
最近有一些同事和我正在讨论AngularJS服务是否应该有状态。我们提出了一些反对的论据,我想获得关于这个问题的更多想法和反馈。在我的搜索中,我发现了 this,但似乎没有提到任何明确的最佳实践。在没有客户端的世界中,服务不应该保持状态,但是我开始认为它可能是可接受的客户端,因为它是一个不同的问题。

服务理由:

>该服务不会被多个线程访问。每个浏览器都有自己的服务实例。
>允许服务仅保留状态,而不是将其存储在rootScope中。包囊

服务的原因不能保持状态:

>服务不再是幂等的。调用功能可能会改变状态,因此根据服务状态调用时可能会有不同的结果。
>我会认为这样会更容易测试。

在“for services holding state”部分中可能解决#2的一种方法是在rootScope上设置一个包含应用程序当前状态的appState对象。那么所有的国家都会聚集在一个地方,然后你只需把你需要的东西从你的服务中拉出来。我发现这个,想知道

在AngularJS,服务 are passed in via factory function.基本上它们是可以包含一些状态的对象(例如,用于缓存或存储执行其操作所需的数据)。

可以承担有/没有状态的两个缺点的一个好的解决方案是返回包含状态的对象的服务(可能实际上是函数)。

看看$ http服务:你可以得到这个服务调用的实例

var x = $http({url:'...'});

然后打来电话

var result = x.get() //actually `$http.get` is shortcut of this operation

与ngResource相同:使用服务,您可以获得可执行所需操作的某些状态的对象。

所以基本上我认为这是最好的选择:从一个点你可以通过移动可以被动作修改为独立对象的状态来避免“副作用”,而不是存储在服务本身中,但是可以在该对象中具有特定的状态存储自定义信息(如验证信息等)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读