Firebase 在 promise 触发之前等待加载数据库数据
Firebase waiting to load database data before promise fires
有人可以用我下面的代码解释如何在 Firebase 中使用 promises 吗:
var p = new Promise(function(resolve, reject) {
var data=null;
var ref = db.ref("/");
ref.once("value", function(snapshot) {
data = snapshot.val();
});
data.onload = function() {
console.log(data+" onload");
if (data!=null) {
resolve('Success!');
}
else {
reject('Failure!');
console.log('failed');
}
}
});
p.then(function() {
/* do something with the result */
console.log(data+" done");
}).catch(function() {
/* error :( */
console.log("error");
});
我想等到我从 data = snapshot.val();
'hear back' 开始调用我的下一个函数。解决这个问题的正确方法是什么?我显然不理解承诺。我正在尝试遵循 this 教程。
Promise 直接内置到 firebase 中。
var ref = firebase.database().ref();
ref.once('value')
.then(function (result) {
// This only happens after the data has been returned
console.log(result.val());
})
.catch(function (err) {
// This is where errors land
console.log('Error', err.code);
});
firebase 的第 3 版已涵盖,因此您无需创建容器承诺。 :)
有人可以用我下面的代码解释如何在 Firebase 中使用 promises 吗:
var p = new Promise(function(resolve, reject) {
var data=null;
var ref = db.ref("/");
ref.once("value", function(snapshot) {
data = snapshot.val();
});
data.onload = function() {
console.log(data+" onload");
if (data!=null) {
resolve('Success!');
}
else {
reject('Failure!');
console.log('failed');
}
}
});
p.then(function() {
/* do something with the result */
console.log(data+" done");
}).catch(function() {
/* error :( */
console.log("error");
});
我想等到我从 data = snapshot.val();
'hear back' 开始调用我的下一个函数。解决这个问题的正确方法是什么?我显然不理解承诺。我正在尝试遵循 this 教程。
Promise 直接内置到 firebase 中。
var ref = firebase.database().ref();
ref.once('value')
.then(function (result) {
// This only happens after the data has been returned
console.log(result.val());
})
.catch(function (err) {
// This is where errors land
console.log('Error', err.code);
});
firebase 的第 3 版已涵盖,因此您无需创建容器承诺。 :)