gpt4 book ai didi

javascript - Promise 可以保持 pending 状态多长时间?

转载 作者:太空狗 更新时间:2023-10-29 17:35:47 24 4
gpt4 key购买 nike

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

当我创建一个 Promise 时,我基本上是在等待来自服务/方的异步应答。但是我应该期望这个 Promise 停留在 pending 状态多长时间?有没有什么机制可以在一段时间后终止它?这种等待/待定的概念有多可靠?

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

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

非常感谢

最佳答案

只要页面加载完毕,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 是否支持。

关于javascript - Promise 可以保持 pending 状态多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com