如何修复 AngularJS 中的未定义承诺错误
How to fix undefined promise error in AngularJS
我正在尝试在 AngularJS 中创建一个承诺:基本上我需要调用发出 http 请求的函数 session.state()
,然后 returns 一些数据。我无法立即访问数据,因为它们仍未定义且尚未返回,所以我尝试建立一个承诺。
这是我到目前为止尝试过的:
这是我打电话的地方 session.state()
:
session.state()
.then(function(data){
if (data['state']) {
self.plan = data['plan'];
self.pool_interface = data['pool_interface'];
}
callback(data['state']);
});
这里是 session.state()
本身:
self.state = function() {
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
var dfd = $q.defer();
dfd.resolve(response.data);
return dfd.promise;
});
};
这两段代码放在不同的服务中。
到目前为止,我只从浏览器控制台收到 "Error: session.state(...) is undefined" 错误。我做错了什么?
你应该在你的异步操作之外定义 defer 和 return 它,像这样:
self.state = function() {
var dfd = $q.defer();
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
dfd.resolve(response.data);
});
return dfd.promise;
};
我正在尝试在 AngularJS 中创建一个承诺:基本上我需要调用发出 http 请求的函数 session.state()
,然后 returns 一些数据。我无法立即访问数据,因为它们仍未定义且尚未返回,所以我尝试建立一个承诺。
这是我到目前为止尝试过的:
这是我打电话的地方 session.state()
:
session.state()
.then(function(data){
if (data['state']) {
self.plan = data['plan'];
self.pool_interface = data['pool_interface'];
}
callback(data['state']);
});
这里是 session.state()
本身:
self.state = function() {
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
var dfd = $q.defer();
dfd.resolve(response.data);
return dfd.promise;
});
};
这两段代码放在不同的服务中。
到目前为止,我只从浏览器控制台收到 "Error: session.state(...) is undefined" 错误。我做错了什么?
你应该在你的异步操作之外定义 defer 和 return 它,像这样:
self.state = function() {
var dfd = $q.defer();
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
dfd.resolve(response.data);
});
return dfd.promise;
};