Javascript 函数在解析时返回承诺拒绝
我有一个Javascript 函数在解析时返回承诺拒绝,javascript,angularjs,Javascript,Angularjs,我有一个angularjs控制器和工厂 因此,我的目的是根据promise结果管理所有消息错误。这意味着在检查resolve factory函数中的一些错误值后,在控制器中接收拒绝 我试着这样做,但不起作用: factory.js var mediaRecent; function getMediaByUserName(user) { return $http.get('https://www.instagram.com/' + user + '/media') .then(func
angularjs
控制器和工厂
因此,我的目的是根据promise结果管理所有消息错误。这意味着在检查resolve factory函数中的一些错误值后,在控制器中接收拒绝
我试着这样做,但不起作用:
factory.js
var mediaRecent;
function getMediaByUserName(user) {
return $http.get('https://www.instagram.com/' + user + '/media')
.then(function (response) {
if (response.data.items.length === 0) {
// I want here to cause a reject in the controller function
return new Error('This user is not public');
}
mediaRecent = response.data.items;
})
.catch(function (error) {
return new Error('There was a problem looking to that user');
});
}
instagramFactory.getMediaByUserName(vm.name)
.then(function () {
$state.go('instagramMediaRecent');
})
.catch(function (error) {
vm.error = error.message;
});
controller.js
var mediaRecent;
function getMediaByUserName(user) {
return $http.get('https://www.instagram.com/' + user + '/media')
.then(function (response) {
if (response.data.items.length === 0) {
// I want here to cause a reject in the controller function
return new Error('This user is not public');
}
mediaRecent = response.data.items;
})
.catch(function (error) {
return new Error('There was a problem looking to that user');
});
}
instagramFactory.getMediaByUserName(vm.name)
.then(function () {
$state.go('instagramMediaRecent');
})
.catch(function (error) {
vm.error = error.message;
});
事实上你打了两次电话给promise。因此,您只能在控制器或工厂中调用它 简单方法 工厂:
function getMediaByUserName(user) {
return $http.get('https://www.instagram.com/' + user + '/media');
}
控制器:
instagramFactory.getMediaByUserName(vm.name)
.then(function () {
if (response.data.items.length === 0) {
// I want here to cause a reject in the controller function
return new Error('This user is not public');
}
var mediaRecent = response.data.items;
$state.go('instagramMediaRecent');
})
.catch(function (error) {
vm.error = new Error('There was a problem looking to that user');
});
尝试抛出错误,而不是返回错误。