您可以做的是等待所有请求通过 $q.all(promises) 使用 angularjs 内置承诺库完成。在成功函数中,您可以在控制器中调用$cordovaSplashscreen.hide() 来隐藏启动画面,如已经提到的user46772。示例代码:
index.html
<body ng-controller="AppController"></body>
app.js
var module = angular.module( "app", [ "ngCordova", "yourServices" ] )
module.config( ... );
module.run( ... );
module.controller( "ApplicationController", ApplicationController );
function ApplicationController( $cordovaSplashscreen, $q, apiCallService ) {
loadData();
function loadData() {
$q.all( apiCallService.loadFoo1, apiCallService.loadFoo2, apiCallService.loadFoo3)
.then( onSuccess, onError );
function onSuccess() {
$cordovaSplashscreen.hide()
}
function onError() {
// do something useful else
}
}
}
yourServices.js
angular
.module( "yourServices", [ "$http" ] )
.factory( "apiCallService", apiCallService );
function apiCallService( "$http" ) {
return {
loadFoo1: loadFoo1,
loadFoo2: loadFoo2,
loadFoo3: loadFoo3
}
function loadFoo1() {
return $http.get( "yourAPI" );
}
...
}
请注意,此代码不是工作示例。但它应该解释您如何着手解决您的问题。此外,您还必须考虑如果您的其中一个请求在 onError() 函数中失败会发生什么。
此外,您应该将代码包装到onDeviceReady 事件中。假设您使用的是ionic,您可以使用这段代码:
$ionicPlatform.ready( loadData );
不要忘记将$ionicPlatform 注入到控制器函数中。