我正在为项目使用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;
});
});
这是我监视功能的逻辑:
重点是:我遵循的tutorial只是说了$http
,而没有提到$q
或Promise
。
所以,我的问题是:
是否有解决方案来手动取消$q
承诺,就像我们在AngularJS中使用$http
一样?
谢谢