当我调用这个函数时,我得到了一堆未定义的apkPkg。当我把BP的时候我打破了apkName,appVersion,appBuild和appID,但由于所有这些都是承诺,apkPkg已经被执行并且将有一堆未定义。问题1:如何同步此异步操作,以便apkPkg具有良好的值。 Q2:我可以使用注释代码,以使这个紧凑和git摆脱额外的变量? 请指教,谢谢
this.getUserInfo = function () {
var apkName, appVersion, appBuild, appID;
$cordovaAppVersion.getAppName().then(function (name) {
apkName = name;
});
$cordovaAppVersion.getVersionNumber().then(function (version) {
appVersion = version;
});
$cordovaAppVersion.getVersionCode().then(function (build) {
appBuild = build;
});
$cordovaAppVersion.getPackageName().then(function (ID) {
appID = ID;
});
/*
$cordovaAppVersion.getAppName().then(function (apkName) {});
$cordovaAppVersion.getVersionNumber().then(function (appVersion) {});
$cordovaAppVersion.getPackageName().then(function (appID) {});
$cordovaAppVersion.getVersionCode().then(function (appBuild) {});
*/
var apkPkg = apkName + " Version " + appVersion + " Build: " + appBuild + " ID: " + appID;
return apkPkg;
};
抱歉,我试着把它放在评论中并且搞砸了。所以我把它放在这里这是一个合乎逻辑的方法。 $ q对我来说是新的,我的理解是$ q将同步异步调用。这是人们在其他情况下也可以使用的一个非常通用的例子。:
this.getUserInfo = function () {
return $q.all([
$cordovaAppVersion.getAppName(),
$cordovaAppVersion.getVersionNumber(),
$cordovaAppVersion.getVersionCode(),
$cordovaAppVersion.getPackageName()
]).then(function (appInfo) {
var apkPkg = appInfo[0] + ' Version ' + appInfo[1] + ' Build: ' + appInfo[2] +
' ID: ' + appInfo[3]
return apkPkg
})
}