在config被执行之前,等待async调用
Wait for async call on run before config is executed (Angular JS)
我需要在加载任何状态之前解析http调用
angular.module('myModule', [])
.run(function($http, MyFactory) {
$http.get('/api..')
.success(function(data){
MyFactory.setData(data);
//Store data in a service
});
})
.config(function($stateProvider) {
$stateProvider
.state('main', {...})
.state('main.app'{
url: '/app'
resolve: {
data: function(MyFactory) {
MyFactory.getData();
// This block needs to be run after my $http call in 'run' has been resolved.
return ..
}
}
}
});
.factory('MyFactory', function () {
var data = '';
return {
setData: function(_data) {
data = _data
},
getData: function() {
return data;
}
}
};
我试图把$http
作为我的第一个状态.main
的解析,但如果你直接去.main.app
,第一个解析在第二个之后执行。
我相信您可以使用以下模式来制作依赖承诺解析,其中setData
链将在.main
中完成,并且当我们在.main.app
中解决getData
时将得到满足。在.run()
中不需要这样做,相反,下面是对我认为您想要完成的内容的简单解释…
.factory('MyFactory', function($http, $q) {
function setData() {
var deferred = $q.defer();
$http.get('/endpoint').success(function(response) {
// do something with data - we just want to resolve the response so this block is executed
deferred.resolve(response)
});
return deferred.promise;
}
function getData() {
return $http.get('/endpoint');
}
return {
getData: 'getData',
storeData: 'storeData'
}
});
.state('main', {
resolve : {
set: ['MyFactory', function(MyFactory) {
return MyFactory.setData();
}]
}
})
.state('main.app', {
resolve: {
data: ['set', 'MyFactory', function(saved, MyFactory) {
// -- set must be resolved
return MyFactory.getData();
}]
}
});
相关文章:
- Nodejs async.each 等待第一个循环
- Chrome扩展:等待元素加载(async js)
- Babel transpiles async但不等待
- 等待函数结束(在 async.series 中)无法按预期工作
- 如何等待findOneAndUpdate完成,然后再继续async.series
- 为什么 JavaScript 函数需要有关键字“async”?“等待”关键字还不够吗?
- 如何使用async.series来等待响应
- Jasmine 2.0 async beforeEach不等待async完成
- 在config被执行之前,等待async调用
- 嵌套async db调用for循环,等待直到循环完成
- 在循环的每次迭代中等待async .done()
- 如何在jquery中等待async完成
- Javascript:等待async完成
- 等待async函数结束
- 返回一个等待的值返回一个承诺?(es7 async /等待)
- 让Jasmine等待Async函数完成
- 在启动Angular JS之前,等待Async Task完成
- 如果并发调用请求仍在加载数据,如何等待async angularJS调用完成
- 在JS中等待Async
- 试图等待async执行的setTimeout问题