Firebase returns 快照但无法访问值
Firebase returns snapshot but can't access value
Peep 总是从函数返回为未定义。有人可以指出我的问题吗?在成功函数中,快照按预期返回。我认为这是一个范围界定问题。
function getPerson( id ) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id ),
peep;
// Attach an asynchronous callback to read the data at our people reference
ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
return peep;
}
once()
方法是异步的,这就是使用回调的原因。在它具有价值之前,您已经 returning peep
。在回调中定义后需要returnpeep
function getPerson( id ) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id ),
peep;
// Attach an asynchronous callback to read the data at our people reference
return ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
return peep;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
}
然后像这样使用它:
getPerson('9234342').then(function(snapshot) {
console.log(snapshot.val());
}).catch(function(error) {
console.error(error);
});
是的,应该是因为没有立即触发成功回调。它接收数据然后进入它。
尝试在回调中返回 peep
。
return ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
return peep;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
希望对您有所帮助。
once() 方法是异步的,这就是使用回调的原因。您可以将回调作为参数传递给 getPerson function
以及 id。
function getPerson(id, callback) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id );
ref.once( "value", function(snapshot) {
var peep = snapshot;
// error will be null, and peep will contain the snapshot
callback(null, peep);
}, function (error) {
// error wil be an Object
callback(error)
});
}
getperson('9234342', function (err, result) {
console.log(result);
});
Peep 总是从函数返回为未定义。有人可以指出我的问题吗?在成功函数中,快照按预期返回。我认为这是一个范围界定问题。
function getPerson( id ) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id ),
peep;
// Attach an asynchronous callback to read the data at our people reference
ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
return peep;
}
once()
方法是异步的,这就是使用回调的原因。在它具有价值之前,您已经 returning peep
。在回调中定义后需要returnpeep
function getPerson( id ) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id ),
peep;
// Attach an asynchronous callback to read the data at our people reference
return ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
return peep;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
}
然后像这样使用它:
getPerson('9234342').then(function(snapshot) {
console.log(snapshot.val());
}).catch(function(error) {
console.error(error);
});
是的,应该是因为没有立即触发成功回调。它接收数据然后进入它。
尝试在回调中返回 peep
。
return ref.once( "value", function( snapshot ) {
//success
peep = snapshot;
return peep;
}, function ( errorObject ) {
//error
//console.log( "The read failed: " + errorObject.code );
});
希望对您有所帮助。
once() 方法是异步的,这就是使用回调的原因。您可以将回调作为参数传递给 getPerson function
以及 id。
function getPerson(id, callback) {
var ref = new Firebase( "https://foo.firebaseio.com/people/" + id );
ref.once( "value", function(snapshot) {
var peep = snapshot;
// error will be null, and peep will contain the snapshot
callback(null, peep);
}, function (error) {
// error wil be an Object
callback(error)
});
}
getperson('9234342', function (err, result) {
console.log(result);
});