手动取消$ q angularjs

时间:2018-07-20 03:33:51

标签: javascript angularjs promise angular-promise

我正在为项目使用angularjs版本1.7.2。

在我的项目中,我有一些希望在数据更改时需要管理和取消。

让我说说,我有一个 select 标记,其中包含一些选项:

<select class="form-control" 
        ng-options="item.id as item.name for item in photos" 
        ng-model="selectedPhotoId">
</select>

我在控制器中使用$watch来检测用户何时更改 select 标记中的项目选择以加载预览图像,而且,我取消了先前的承诺,因为选择具有已更改。

这是我的手表功能:

$scope.$watch('selectedPhotoId', (value) => {

    // Cancel the previous promise.
    if ($scope.loadPhotoPromise)
        $promiseManager.cancel($scope.loadPhotoPromise);

    if (!$scope.cache.loadedPhoto[value]){
        $scope.loadPhotoPromise = $photo.loadPhotos(value)
            .then((photo) => {
                $scope.cache.loadedPhoto[photo.id] = photo.content;
                return photo.content;
            })
    } else {
        // Image already in cache.
        $scope.loadPhotoPromise = $q(resolve => {
            resolve($scope.loadedPhoto[value]);
        });
    }

    $scope.loadPhotoPromise
        .then((photoContent) => {
            $scope.photoPreviewImage = photoContent;
        });
});

这是我监视功能的逻辑:

  • 如果图像已加载,将使用$ q对其进行解析。
  • 如果图像不存在于缓存中,则会通过$ http服务加载。

重点是:我遵循的tutorial只是说了$http,而没有提到$qPromise

所以,我的问题是:

是否有解决方案来手动取消$q承诺,就像我们在AngularJS中使用$http一样?

谢谢

0 个答案:

没有答案