gpt4 book ai didi

javascript - 如何在 Service AngularJS 中使用 Promise?示例数据 Firebase

转载 作者:行者123 更新时间:2023-11-30 12:20:57 25 4
gpt4 key购买 nike

这是我的 service.js 文件:

    angular.module('starter.services', [])
.factory('firebaseData', function() {
return {
refUserFacebook: function (userUid) {
var firebaseRef = new Firebase("https://sweltering-heat-772.firebaseio.com/users/");
var user;
firebaseRef.once('value', function(dataSnapshot) {
var users = dataSnapshot.val();
var userKeys = Object.keys(users);
for (var i = 0, len = userKeys.length; i < len; i ++){
if (users[userKeys[i]].uid == userUid){
user = users[userKeys[i]];
}
}
console.log(user);
return user;
});
}
}
})

这里是我的 Controller 文件名item.js文件

angular.module('starter.controllers.item', [])

.controller('ItemCtrl', function($scope, firebaseData) {

var ref = firebaseData.ref();
var userUid = ref.getAuth();
var user = firebaseData.refUserFacebook(userUid.uid);
console.log(user);

})

当然,我会先在 item.js Controller 中获取 undefined,然后在服务中返回 user。

我真的很想在我的 Controller 中使用 Promise 技术,从服务中返回用户值(value)。

在 item.js 文件中,它会是这样的:

firebaseData.refUserFacebook(userUid.uid).then(function(user){
console.log(user); //Promise after retrieving value from service.js
});

任何帮助将不胜感激。

谢谢

最佳答案

下次你应该至少提供一些你尝试的代码......但这是你想要的:

angular.module('starter.services', [])
.factory('firebaseData', function($q) {
return {
refUserFacebook: function (userUid) {
var firebaseRef = new Firebase("https://sweltering-heat-772.firebaseio.com/users/");
var user;
var deferred = $q.defer();
firebaseRef.once('value', function(dataSnapshot) {
var users = dataSnapshot.val();
var userKeys = Object.keys(users);
for (var i = 0, len = userKeys.length; i < len; i ++){
if (users[userKeys[i]].uid == userUid){
user = users[userKeys[i]];
}
}
console.log(user);
deferred.resolve(user);
});
return deferred.promise;
}
}
})

关于javascript - 如何在 Service AngularJS 中使用 Promise?示例数据 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com