【发布时间】:2017-06-01 07:49:39
【问题描述】:
所以我有多个函数,它们都使用大致相同的 $promise.then -> catch 链接。我想知道如何将其作为一个单独的函数来减少重复代码。
使用“几乎”相同链接的两个函数的示例:
动态地图服务
function checkGeoDataServiceDynamicMap() {
neDynamicMapService.get({
'bbox': '282254.0907785857,7067749.991627717,283178.8115196741,7068194.492510452',
'size': '699,336',
'dpi': '96',
'format': 'png24',
'transparent': 'true',
'bboxSR': 25833,
'imageSR': 25833,
'layers': 'show:1,2,3',
'layerDefs': '{"3":"seksjonsnr=0}"',
'token': $scope.geoToken,
'f': 'image'
}).$promise.then(
function callback(data) {
$scope.geoDataServiceDynamicMap = ((data.data !== null) && (data.headers[Object.keys(data.headers)[0]] === "image/png")) ? 'geoDataServiceDynamicMap_OK' : 'monitoring_fail';
$scope.allChecks.push($scope.geoDataServiceDynamicMap);
}
).catch(function errback(err) {
$scope.geoDataServiceDynamicMap = 'monitoring_failure';
});
};
checkGeoDataServiceIdentity
function checkGeoDataServiceIdentity() {
neIdentityMapService.get({
'sr': '25833',
'ImageDisplay': '699,336,96',
'mapExtent': '121517.75468785927,6612387.032135592,121619.89991039888,6612464.586427085',
'geometry': 'esriGeometryPoint',
'geometryType': 'true',
'layers': 'all',
'tolerance': '0',
'token': $scope.geoToken,
'f': 'json'
}).$promise.then(
function callback(data) {
$scope.geoDataServiceIdentity = ((data.data !== null) && (data.headers[Object.keys(data.headers)[0]] === "image/png")) ? 'geoDataServiceIdentity_OK' : 'monitoring_fail';
$scope.allChecks.push($scope.geoDataServiceIdentity);
}
).catch(function errback(err) {
$scope.geoDataServiceIdentity = 'monitoring_failure';
});
};
所以问题是是否有可能创建一个单独的函数来完成从 $promise.then -> 捕获的所有工作?这样我就不必有很多重复项。
【问题讨论】:
-
你需要一个带参数的函数,并在函数体中使用参数
标签: javascript angularjs typescript promise angular-promise