我正在使用AngularJS和Typescript。在我的控制器构造函数中,我调用一个获取数据并返回promise的函数。承诺存储在变量 /select?q=your query&facet=true&facet.field=color_base
。
x
现在如果承诺永远不会解决,它什么都不显示。我想使用x.then((data) => {
//displays data
}, (err) => {
//sends error message
});
,这样如果$timeout
的分辨率花费太长时间,它就会显示另一条消息。我不知道如何做到承诺。调用x
只会延迟内容,我可以延迟一个函数。如果承诺没有解决,我该如何中止?
答案 0 :(得分:0)
AngularJS v1.6引入了可用于中止承诺的$q.race method:
var timeoutPromise = $timeout(null, delay).then(() => {throw "Timeout Abort" });
var timedPromise = $q.race(xPromise, timeoutPromise);
在此示例中,timedPromise
将使用xPromise
的结果解析(已履行或已拒绝),或因“超时中止”原因而被拒绝,以先到者为准。