如何在后台运行一个函数

时间:2017-11-27 16:37:25

标签: angularjs promise

在我们的AngularJS应用程序中,我们有一些非常繁重的操作,可能需要10秒钟,可以调用30次。为了不阻止UI,我们希望在后台进行该函数调用。但我无法弄清楚如何做到这一点。

我尝试使用$q就像一个函数:

this.$q(resolve => {
    resolve(someHeavyCalculation())
}).then(result => stuffWeHaveToDoAfterTheCall)

但这阻碍了我们的计划。

我尝试使用$q.deferedsetTimeout进行异步调用

const defered = this.$q.defered()
setTimeout(() => {
    defered.resolve(someHeavyCalculation())
})
defered.promise.then(result => stuffWeHaveToDoAfterTheCall)

这有效但是每隔8秒就会调用$timeout,这会打破很多东西(也许是因为我们经常调用这个函数?)。

我尝试的最后一件事是希望$timeout能够神奇地将呼叫提升到异步世界

this.$timeout(someHeavyCalculation).then(result => stuffWeHaveToDoAfterTheCall)

但这也不起作用。

那么将这个函数转化为承诺的正确方法是什么?

0 个答案:

没有答案