【发布时间】:2017-04-07 05:41:17
【问题描述】:
我已经浏览了几个 Promise 语法,但我真的不理解它(包括那些有示例的)。他们中的大多数解决了一个变量,但我的有点复杂,我似乎无法让它正确运行。
我正在使用 Firebase 获取当前用户,并希望它在获取用户后运行下一行。
这是我的代码:
componentDidMount() {
var promise = new Promise ((resolve, reject) => {
var user = fire.auth().currentUser};
resolve(
if(user) {
console.log('Favorites: requesting favorites');
fire.database().ref('/favourites/' + user.uid).once('value').then(function (snapshot) {
var recipes_obj = snapshot.val();
let recipes = [];
for (let id in recipes_obj) {
let recipe = recipes_obj[id];
recipe.id = id;
recipes.push(recipe);
console.log("recipes: ", recipes)
}
console.log("recipes outside", recipes);
this.setState({ recipes: recipes });
}.bind(this));
} else {
console.log('Favorites: no user')
}
)
}
我也试过这样
componentDidMount() {
var user = new Promise ((resolve, reject) => {
resolve(fire.auth().currentUser).then(() => {
if(user) {
console.log('Favorites: requesting favorites');
fire.database().ref('/favourites/' + user.uid).once('value').then(function (snapshot) {
var recipes_obj = snapshot.val();
let recipes = [];
for (let id in recipes_obj) {
let recipe = recipes_obj[id];
recipe.id = id;
recipes.push(recipe);
console.log("recipes: ", recipes)
}
console.log("recipes outside", recipes);
this.setState({ recipes: recipes });
}.bind(this));
} else {
console.log('Favorites: no user')
}
})
})
【问题讨论】:
-
someFunctionName(if(user) {- 这看起来像 javascript 语法吗?所以它也不能与resolve一起工作——事实上,这些块都不是有效的语法,所以在你修复你的语法之前修复你的逻辑会很困难
标签: javascript reactjs firebase firebase-realtime-database firebase-authentication