微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Promise可以保持待处理状态多长时间?

我在Angular(4)项目中使用了Promises,我对它们有一个问题,我在文档中找不到对它的响应.

当我创建一个Promise时,我基本上等待服务/派对的异步回答.但是,我应该期待这个承诺保持待定状态多长时间?
是否有任何机制会在一段时间后终止它?
这种等待/待定的概念有多可靠?

让我们假设我需要从忙碌的服务中获取一些数据,即使在等待几分钟后也可以回答,可能更多,无论响应的计算是资源密集型进程还是该服务与另一个正在响应的服务相关联非常慢.
在客户端是否有任何东西会以某种方式终止我的Promise并确定/强制创建另一个再次询问我的数据?

有人建议升级到Observables,我会这样做,但是现在我想继续使用Promises,至少在某些代码区域.

Tks很多

解决方法:

只要页面加载,Promise就可以处于挂起状态.

您可以将调用包装在另一个Promise中,其中引入了如图所示的超时

let wrappingPromise = new Promise((resolve, reject) => {
  var error = false;
  setTimeout(function(){
    reject("some error"); 
  }, 3000);
  this.http.get(...).toPromise().then(res => {
    if(!error) {
      resolve(res.json);
    }
  });
}); 

达到超时时,这将导致错误.
它仍将等待收到完整的回复.
Observable可能能够转发取消并关闭连接,以便在达到超时时甚至不再接收结果.这可能取决于具体实现和浏览器使用的浏览器API是否支持.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐