[英]How to break/return an Angular asynchronous call in AngularJS
我有以下项目结构:
PageController.js
BusinessService.js
NetworkManager.js
在我的PageController中,我有以下调用:
var getSomething = this._businessService.getMeSomething().then(function(response) {
alert("my response: " + response);
});
在我的BusinessService中:
getMeSometing: function() {
var user = this.getUserData();
if(user) {
var sendPromise = this._networkManager.getAnotherThing(user.id).then(function(response) {
alert("And another response: " + response);
});
} else {
$q.reject({ message: 'Rejecting this promise' });
}
},
在NetworkManager
类中进行http调用。 所以这里的问题是,当我没有用户数据时,我想中断呼叫,因此我使用了reject
。
这将返回错误: Cannot read property 'then' of undefined
有关PageController
的调用Cannot read property 'then' of undefined
。
因此,根据我的情况,如果没有userData,我想在哪里取消请求,该如何完成呢?
您的电话应该返回一个承诺。 如果有用户,则从getAnotherThing
返回承诺,否则,从$q.reject
返回承诺...
getMeSomething: function() {
var user = this.getUserData();
var sendPromise;
if(user) {
sendPromise = this._networkManager.getAnotherThing(user.id).then(function(response) {
alert("And another response: " + response);
// you probably want to return the data if successful (either response or response.data, depending on what response is)
return response.data;
});
} else {
sendPromise = $q.reject({ message: 'Rejecting this promise' });
}
return sendPromise;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.