有人可以通过我的代码解释如何在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();
'回复'。这是怎样的正确方法?我显然不理解承诺。我正在尝试关注this教程。
答案 0 :(得分:2)
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版已经涵盖了您,因此您无需创建容器承诺。 :)