0
我有這樣的代碼:如何將cordova getAppVersion包裝在變量承諾上?
var promiseVersionNumber;
if (typeof cordova !== 'undefined') {
console.log("I have cordova, I will try to get the AppversionNumeber");
promiseVersionNumber = cordova.getAppVersion.getVersionNumber();
} else {
console.warn("There is no cordova, I will use a dummyAppVersion");
promiseVersionNumber = $q.when(dummyAppVersion);
}
return $q.when(
(promiseVersionNumber).then(function(versionNumber){
defaultConfig.version = versionNumber;
return dbAppInfo.put(defaultConfig);
}).then(function(putDefaultConfig){
console.log("appConfig was created and saved on Database");
return dbAppInfo.put({
_id: 'myLastUpdate',
myLastUpdate: today,
debug: todayDebug
});
}).catch(function(error){
console.error("There was an error while initAppConfig appConfig on Database");
console.dir(error);
console.groupEnd("initAppConfig");
return error;
}));
在瀏覽器與我的假promiseVersionNumber
所有工作正常,但在設備上我得到這個錯誤:
TypeError: promiseVersionNumber.then(...).then(...).then(...).catch is not a function
我該如何正確包裝cordova.getAppVersion.getVersionNumber()
?
看着ngCordova [這裏](https://github.com/driftyco/ng-cordova/blob/master/src/plugins/appVersion.js),難道是'cordova.getAppVersion.getVersionNumber() '不會回覆一個承諾,而只是一個普通的對象? – distante
不,他們確實返回承諾... getVersionNumber:function(){ var q = $ q.defer(); cordova.getAppVersion.getVersionNumber(function(version){ q.resolve(version); }); return q.promise; }, – iCediCe
我的意思是沒有ngCordova包裝。 (爲了安全我會用ngCordova) – distante