【问题标题】:AngularJS- $timeout to abort if promise isn't resolvedAngularJS- $timeout 如果 promise 没有解决则中止
【发布时间】:2017-07-11 13:09:05
【问题描述】:

我正在使用 AngularJS 和 Typescript。在我的控制器构造函数中,我调用了一个获取数据并返回承诺的函数。承诺存储在变量x中。

x.then((data) => {
   //displays data
}, (err) => {
   //sends error message
});

现在,如果 Promise 永远不会解决,它不会显示任何内容。我想使用$timeout,这样如果x 的分辨率太长,它就会显示另一条消息。我不知道我怎么能做到这一点。调用this.$timeout(3000,true).then(() => {}); 只是延迟内容,我可以延迟一个函数。如果承诺没有解决,我该如何中止?

【问题讨论】:

标签: javascript angularjs typescript


【解决方案1】:

AngularJS v1.6 引入了$q.race method,它可以用来中止一个promise:

var timeoutPromise = $timeout(null, delay).then(() => {throw "Timeout Abort" });

var timedPromise = $q.race(xPromise, timeoutPromise);

在此示例中,timedPromise 将使用 xPromise 的结果解析(完成或拒绝)或以“超时中止”的原因被拒绝,以先到者为准。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多