如果未解决,则AngularJS- $ timeout将中止

时间:2017-02-21 18:37:19

标签: javascript angularjs typescript

我正在使用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只会延迟内容,我可以延迟一个函数。如果承诺没有解决,我该如何中止?

1 个答案:

答案 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的结果解析(已履行或已拒绝),或因“超时中止”原因而被拒绝,以先到者为准。