gpt4 book ai didi

javascript - 如何在 AngularJS 中中断/返回 Angular 异步调用

转载 作者:行者123 更新时间:2023-12-03 12:11:13 25 4
gpt4 key购买 nike

我有以下项目结构:
- 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' });
}
},

http 调用是在 NetworkManager 类中进行的。所以这里的问题是,当我没有用户数据时,我想中断调用,所以我使用 reject
这会返回错误:关于 PageController 中的调用,无法读取未定义的属性“then”

那么,考虑到我的情况,如果我没有 userData,我想取消请求,我该如何完成此操作?

最佳答案

您的调用应该返回一个 promise 。如果有用户,则从 getAnotherThing 返回 Promise,否则,从 $q.reject 返回 Promise...

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;
}

关于javascript - 如何在 AngularJS 中中断/返回 Angular 异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com