【问题标题】:Wait to Promise Angular 2等待承诺 Angular 2
【发布时间】:2018-01-17 10:17:41
【问题描述】:

首先我要说明一下,我看了很多答案,明白阻塞线程等待响应是错误的。但是我有一个问题不是那么容易解决的。

我有一个高级项目,我在会话服务上有一个函数 getAuthenticationKey():string 我在代码的不同部分(调用休息函数等)中使用了很多,我把它做成了一个普通的函数,因为我认为这个值会存在或不存在。

现在我们进行了一些更改,getAuthenticationKey 在必要时将不得不调用一个休息函数来刷新密钥。

所以问题是我明白最好的方法是做出承诺并重构整个项目,但这在时间方面太贵了,因为我必须为该功能和所有其他功能做出承诺这取决于该功能(几乎所有应用程序),并且考虑到刷新是一种快速操作并且每天或每周调用一次,有没有办法在不重构所有项目的情况下解决这个问题?

【问题讨论】:

    标签: angular typescript promise angular-promise


    【解决方案1】:

    您可以保持您的代码不变,只需添加一个定期检查器 (setInterval(...)),它会在必要时更新 authenticationKey。如果您知道密钥的生命周期,您可以使用setTimeout(...) 而不是定期检查。

    【讨论】:

    • 我要刷新getAuthenticationKey里面的key,所以要在函数里等待新的key,有没有其他办法等待响应?
    • 您可以使用同步 XhrRequest,但它已被弃用 developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/… 这样您就可以避免使用 Promise。也许如果您写了为什么不能在后台刷新 auth 密钥,它可能有助于找到解决方案。
    • 事实上,我需要 getAuthenticationKey 返回一个有效的密钥(根据休息操作检查它)而不做出承诺。所以我不必重构整个项目。如果我知道在创建 getAuthentitacionKey 函数时必须检查有效性,我会用 promise 完成,但现在进行重构是一场噩梦。
    【解决方案2】:

    我使用解析器解决了这个问题,因为我在加载页面时检查身份验证。在解析器中,我根据休息服务检查身份验证并将结果存储在服务中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 2017-07-31
      • 2018-05-29
      • 1970-01-01
      • 2013-09-16
      • 2019-04-29
      • 2020-10-31
      • 2019-12-10
      相关资源
      最近更新 更多