oro*_*uwk 5 javascript es6-promise angular
我在Angular(4)项目中使用了Promises,我对它们有一个问题,我在文档中找不到对它的响应.
当我创建一个Promise时,我基本上等待服务/派对的异步回答.但是,我应该期待这个承诺保持待定状态多长时间?是否有任何机制会在一段时间后终止它?这种等待/待定的概念有多可靠?
让我们假设我需要从忙碌的服务中获取一些数据,即使在等待几分钟后也可以回答,可能更多,无论响应的计算是资源密集型进程还是该服务与另一个正在响应的服务相关联非常慢.在客户端是否有任何东西会以某种方式终止我的Promise并确定/强制创建另一个再次询问我的数据?
有人建议升级到Observables,我会这样做,但是现在我想继续使用Promises,至少在某些代码区域.
Tks很多
Promise只要页面被加载,A就可以处于挂起状态。
您可以将调用包装在另一个中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);
}
});
});
Run Code Online (Sandbox Code Playgroud)
这将在达到超时时导致错误。它仍将等待接收完整响应。Observable 可能能够转发取消并关闭连接,这样在达到超时时甚至不会再收到结果。这可能取决于具体实现和浏览器使用的浏览器 API 是否支持。
new Promise(() => {})永远不会解决,就像从未调用过的回调一样。
Promise 是一个附加回调的返回对象,而不是将回调传递到函数中。就这样。它不是刚刚启动的异步操作的控制面。
相反,请查看您为此类控件调用的异步 API(如果有)。
大多数人都是异步 API 返回的 Promise 的消费者。除了包装遗留回调 API 之外,没有理由创建 Promise。在理想的世界里没有必要。
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |