【发布时间】:2015-07-28 05:24:44
【问题描述】:
我正在尝试将我的 firebase 身份验证放入服务中。但是我偶然发现了程序流程的一些问题。 firebase 的响应较慢,代码需要等待它完成。
我试图创建一个promise,但它不能正常工作。 这是我的代码:
//controller.js
articleControllers.controller('AuthController',
['$scope', '$firebaseObject', 'AuthenticationService',
function($scope, $firebaseObject, AuthenticationService){
$scope.login = function() {
AuthenticationService.login($scope.loginForm)
.then(function(result) {
if(result.error) {
$scope.message= result.error.message;
}
else {
console.log("user");
}
});
};
}
]);
services.js
myApp.factory('AuthenticationService',
function($firebase, $firebaseAuth, $routeParams, FIREBASE_URL) {
var auth = new Firebase(FIREBASE_URL);
var myReturnObject = {
//user login
login: function(user) {
return auth.authWithPassword({
email: user.loginEmail,
password: user.loginPassword
},
function(error, authData) {
console.log("hit after .then");
return {
error: error,
authData: authData
}
});
}
};
return myReturnObject;
});
我已经在我的代码中为 $http 获取请求使用过一次承诺。但是对于firebase,它似乎不起作用。我收到 错误:无法读取 controller.js 中未定义的属性 'then'。 任何人都知道如何让 Angular 等待服务?
【问题讨论】:
-
你想要
.then之前的分号吗? -
不,它在简化我的代码时是一个错字。我编辑它。
-
firebase 函数 authWithPassword 不返回 promise,它是一种回调样式。你需要在你的代码中创建promise。
-
在 service.js 或 controller.js 中?你能提供一个简短的例子吗?将不胜感激。我已经尝试了 100 件事。
标签: angularjs firebase promise