我有一个角度控制器,它有许多功能,可以在它们之间共享数据。问题是,我从函数1返回的数据在函数2中使用,然后在函数2中返回的数据在函数3中使用。我的问题是函数2和函数3首先执行并且说没有找到数据有没有办法我可以安排函数1先执行。
以下是我的参考代码:
$scope.Read = function () {
var get = ServiceName.Read();
getConfig.then(function (d) {
$scope.RID = d.data;
alert($scope.RID);
}, function (error) {
$log.error('Oops! Something went wrong while fetching the application key data.' + error)
})
}
$scope.Read();
功能2我想使用数据:
$scope.getApp = function () {
var sub ={
"RID": $scope.RID
}
var App = ServiceName.getApp(sub);
App.then(function (d) {
$scope.LID = d.data.BUser;
}, function (error) {
$log.error('Opps! Something went wrong in getting appplication defaults');
});
}
$scope.getApp();
任何帮助将不胜感激!
谢谢!
最诚挚的问候,
和Sandeep
答案 0 :(得分:1)
如果前两个是对返回promise的服务的调用,它看起来就像是。你能否在.Then()?
中调用该函数示例:
$scope.functionOne(){
CallToService().then(function(data){
//Success call Function 2
$scope.functionTwo(data);
},function Error(){
//Error/
}
};
$scope.functionTwo(){
CallToService2().then(function Success(data){
//Call function 3
$scope.function3(data);
},
function Error(){
//Error
}
}
答案 1 :(得分:0)
如果您需要初始化某些内容,可以考虑使用config,或运行:
angular.module('myModule', []).
config(function(injectables) {
}).
run(function(injectables) {
});
在此处查看更多内容:https://docs.angularjs.org/guide/module
答案 2 :(得分:0)
这是因为服务是异步调用的。您可以链接承诺并返回下一个服务中所需的值,依此类推......
getConfig.then(function (d) {
return d.data;
}, function (error) {
}).then(function(res){
// Call second service with value returned from first service
}).then(function(res){
// Call third service with value returned from second service
})