Android 在Ionic/Cordova应用程序中处理承诺
我目前正在开发一个Android 在Ionic/Cordova应用程序中处理承诺,android,angularjs,cordova,ionic,angular-promise,Android,Angularjs,Cordova,Ionic,Angular Promise,我目前正在开发一个Ionic/Cordova应用程序,一个待办事项应用程序。我正在使用ngCordova库,以便更方便地使用cordova插件。我还使用了litehelopers()提供的Sqlite插件 我的问题是如何正确理解JavaScript的行为。我有一个称为“Projects”的角度服务,它使用SQLite插件,还有一个委托给它的“Tasks”控制器 angular.module('myapp.services',[]) .factory(“项目”、[“$ionicPlatform”
Ionic/Cordova
应用程序,一个待办事项应用程序。我正在使用ngCordova
库,以便更方便地使用cordova插件。我还使用了litehelopers
()提供的Sqlite
插件
我的问题是如何正确理解JavaScript的行为。我有一个称为“Projects”的角度服务,它使用SQLite插件,还有一个委托给它的“Tasks”控制器
angular.module('myapp.services',[])
.factory(“项目”、[“$ionicPlatform”、“$cordovaSQLite”、“$window”、“$q”,
函数($ionicPlatform、$cordovaSQLite、$window、$q){
返回{
//一些功能。。
getCurrentProject:函数(){
var q=$q.defer();
$ionicPlatform.ready(函数(){
$cordovaSQLite.execute(db,
“选择id_项目,项目名称,其中active=1”)。然后(
功能(res){
q、 解析(res.rows.item(0));
},函数(err){
q、 拒绝(错误);
控制台错误(错误消息);
});
});
回报承诺;
}
};
}
]);代码>承诺设计为可与错误处理和最终行为(可选)链接,如下所示:
Projects.getCurrentProject()
.then (project) -> currentProject = project
.catch (err) -> console.error err
.finally () -> wrapUpFn()
因此,您需要使用。然后
进行分配。否则,将currentProject指定给promise对象,而不是promise对象的结果(这正是您想要的)
编辑
现在使用javascript:)
顺便说一句,promise对象很好,因为您可以继续使用。然后
s链接,并且仍然保持错误处理和最终行为清晰。这让您可以创建在疯狂的javascript世界中排序的简单流。回答得好,+1(请告诉我)-这是我唯一的问题,它看起来不像javascript。不确定这是否是一些咖啡脚本方言(从未涉及到这类内容),但您不认为提供香草的工作示例会更好吗?我在这里看到的一个明显缺失是为.then()
,.catch()
方法(“.then(function(result){…});
”)提供实际函数。是的,这是coffeescript。我打字的时候都没注意到。。。唉。无论如何,现在翻译成JS!谢谢你的回答!现在在我的控制器中,我的行为如下:var currentProject=Projects.getCurrentProject().then(函数(res){return res;});它好吗?我不相信它会起作用。我认为您需要在中进行实际的变量赋值。然后
(参见上面的示例)。否则,currentProject
将立即分配给promise对象,而不是在瞬间被未定义
,然后被分配给项目一次getCurrentProject()
返回。
var currentProject
Projects.getCurrentProject()
.then(function(project) {
currentProject = project
})
.catch(function(err) {
console.error(err)
})
.finally(function() {
wrapUpFn()
})