我试图在AngularJS中创建一个Promise:基本上,我需要调用发出HTTP请求的函数session.state()
,然后返回一些数据。我无法立即访问数据,因为它们仍未定义且尚未返回,因此我试图建立一个承诺。
这是我到目前为止尝试过的:
这就是我叫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;
});
};
这两段代码放在单独的服务中。
到目前为止,我仅从浏览器控制台收到“错误:session.state(...)未定义”错误。我在做什么错了?
答案 0 :(得分:1)
您应该定义延迟并在异步操作之外将其返回,如下所示:
self.state = function() {
var dfd = $q.defer();
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
dfd.resolve(response.data);
});
return dfd.promise;
};