使用$ timeout和处理承诺调用每个x secons的资源?

时间:2016-03-13 06:30:23

标签: angularjs promise angular-promise

在Angular应用中,我有一个API调用。我想让这个电话每5秒运行一次因此我应该使用$ timeout,我在想。但我不确定,我应该如何处理这个承诺。

这是我的调用,在实现$ timeout之前,它有效:

vm.products = Products.get();
vm.products.$promise.then(function (data) { 
    // do something
});

然后我尝试实现$ interval,如下所示:

vm.products = $interval(Products.get(), 5000);
vm.products.$promise.then(function (data) {
    // do something
});

但这会返回vm.products.$promise is undefined

它应该怎么样?

1 个答案:

答案 0 :(得分:1)

下面应该可以工作。

vm.products = $interval(Products.get, 5000);
vm.products.then(function (data) {
    // do something
});

不要vm.products使用Product.get()承诺,如果在5秒内没有完成,那么旧的待处理承诺就会搞乱。

$interval(productPromise, 5000);

function productPromise() {
    Products.get().$promise.then(function (data) {
    // do something
    });
};