【发布时间】:2019-08-13 16:02:28
【问题描述】:
我在 AngularJS 中继承了一个项目,但存在一些结构性问题。它使用 API 调用从端点获取一些设置,但有时应用程序会在这些设置加载之前尝试使用这些设置,从而导致“未定义”错误。
我试图通过使用 getter 来解决这个问题。这个想法是,当某些方法访问设置对象时,它会检查它们是否已经加载,如果没有,则从 API 中获取它们。
一段时间后我已经让它工作了,但是这个想法有问题。当多个方法同时访问设置时(加载页面时),API 将被多次调用,因为第一次调用尚未返回以覆盖内部 _settings。
vm._settings = null;
Object.defineProperty(vm,'settings',{get: function(){
if(vm._settings == null){
settings_service.get().$promise.then(function success(response) {
vm._settings = response;
console.log(vm._settings);
console.log("returning in");
return vm._settings;
}, function error(err) {
handle_api_error(ngNotify, err);
});
}
else return vm._settings;
}});
我想不出一种方法让其他尝试执行 getter 等到第一个调用返回并改用该结果。我不确定我是否应该使用 await、promises 或其他东西。提前致谢
【问题讨论】:
标签: javascript angularjs angular-promise