将基于回调的API与AngularJS集成
通常,在AngularJS中,基于第三方回调的API通过将其转换为$q承诺与框架集成:
function apiPromise(callbackBasedApi) {
var defer = $q.defer()
callbackBasedApi( (value,err) => {
̶c̶a̶l̶l̶b̶a̶c̶k̶(̶)̶;̶
if (value) {
defer.resolve(value);
} else {
defer.reject(err)
};
})
return defer.promise;
}
.then
返还承诺的方式:
$scope.action = (action, redirect) => {
delete $scope.error;
$scope.loading = true;
var promise = apiPromise($scope.project[action])
.then(function(value) {
if (redirect)
$state.go('projects.all');
};
})
.catch(function(err) {
$scope.error = err;
})
.finally(function() {
$scope.loading = false;
});
}
承诺由
$q
service
与AngularJS框架及其摘要周期集成。在AngularJS执行上下文中应用的操作将自动受益于AngularJS数据绑定、异常处理、属性监视等。