我是AngularJS的新手,我需要访问Javascript中承诺内部分配的变量
this.reqData= this.profileService.getData();
var resp1 = angular.fromJson(this.reqData);
this.data1;
var that = this;
resp1.$promise.then(function (data) {
that.data1= data.resource.resource;
}).catch(function (error) {
console.log(error);
});
console.log(this.data1);
可以从HTML访问变量data1,但它在Javascript中显示undefined
答案 0 :(得分:6)
Promise是异步的。问题在于,当您到达console.log
时, $promise.then
代码尚未运行。
您必须等待承诺履行才能访问该数据。
您想要应用于该值的任何操作必须在内部中完成您传递给then
的回调函数:
resp1.$promise.then(function (data) {
var data1 = data.resource.resource;
// do all your processing on data1 *here*
console.log(data1);
}).catch(function (error) {
console.log(error);
});
AngularJS能够在获取数据时更新HTML,因为$promise
是Angular-aware - 它知道,一旦你的回调运行,它必须告诉AngularJS刷新/重绘你的页面(和因此更新数据。)
答案 1 :(得分:1)
因为您不知道promise
何时返回,所以console.log(this.data1);
您可以在callback
。
resp1.$promise.then(function (data) {
that.data1= data.resource.resource;
}).catch(function (error) {
console.log(error);
});