angularjs - 如何修复 AngularJS 中未定义的承诺错误
问题描述
我正在尝试在 AngularJS 中创建一个承诺:基本上我需要调用session.state()
发出 http 请求然后返回一些数据的函数。我无法立即访问数据,因为它们仍未定义且尚未返回,因此我尝试建立一个承诺。
这是我到目前为止所尝试的:
这是我打电话的地方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(...) is undefined”错误。我究竟做错了什么?
解决方案
您应该定义延迟并将其返回到您的异步操作之外,如下所示:
self.state = function() {
var dfd = $q.defer();
$http.get(self.baseUrl + 'api/session/state')
.then(function(response) {
dfd.resolve(response.data);
});
return dfd.promise;
};
推荐阅读
- google-calendar-api - 如何通过 Google Actions 和 Dialog Flow 访问 Google Calendar API
- python - django.db.utils.ProgrammingError: (1146, "表 'med_portal.Custparent' 不存在")
- python - 如何在 python 中为特定的输出模式进行运行长度编码?(不使用 groupby 和 lists 进行输出)
- javascript - 查找父级的顶部偏移量
- flutter - 如何在 Flutter 中对齐 Column 的子项在不同位置?
- windows - Windows 中使用 Win32_NTLogEvent 类的相关登录和注销事件
- ios - Realm Swift 如何将观察者添加到对象类型(无)
- javascript - 由于 cors 策略,无法从端点的数据中获取数据
- django - 如何为 django 项目设置 apache2.conf 文件?
- python - 使用 PIL 压缩 JPEG 图像