我是Angular的新手,正尝试使用以下函数从Firebase作为字符串数组获取详细信息:
Firestore:公司>详细信息>应用>名称:“ WM,TT,MP”
getCompanies(): string [] {
var appl: string [] = [] ;
this.db.database.ref("companies/details/app/").on('value', function (snap) {
snap.val().name.split(",").forEach(function(x:string){
appl.push(x);
console.log(">>>first "+appl.length);
});
});
console.log("Reached here ");
console.log(">>>second "+appl.length);
return appl;
}
当我从像
这样的init组件调用getCompanies时 ngOnInit() {
console.log(">>>"+this.localservice.getCompanies().length);
}
它正在运行,没有任何错误,但是我得到以下输出,而我没有得到字符串[]。长度变成空白。
Reached here
>>>second 0
>>>0
>>>first 1
>>>first 2
>>>first 3
问题是,第二步要比第一步先执行。结果,我将字符串[]设置为blank,如何以角度的方式获取此工作
答案 0 :(得分:0)
您正在记录并返回外部回调函数appl,这就是为什么第二个在第一个之前获取日志的原因。
将日志记录并在回调函数内返回appl,如下所示:
getCompanies(): string [] {
var appl: string [] = [] ;
this.db.database.ref("companies/details/app/").on('value', function (snap) {
snap.val().name.split(",").forEach(function(x:string){
appl.push(x);
console.log(">>>first "+appl.length);
});
console.log("Reached here ");
console.log(">>>second "+appl.length);
return appl;
});