Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待一个循环_Javascript_Angular_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何等待一个循环

Javascript 如何等待一个循环,javascript,angular,firebase,firebase-realtime-database,Javascript,Angular,Firebase,Firebase Realtime Database,我在angular方面是新手,尝试在firebase中执行一些循环操作。我想通过电子邮件id获取所有信息 user_info = []; for (let index = 0; index < this.email.length; index++) { this.get_student_service .get_student_by_email_id(this.email[index]) .subscribe((res)

我在angular方面是新手,尝试在firebase中执行一些循环操作。我想通过电子邮件id获取所有信息

user_info = [];
 for (let index = 0; index < this.email.length; index++) {
          this.get_student_service
            .get_student_by_email_id(this.email[index])
            .subscribe((res) => {
              this.user_info.push(res);
              console.log(this.user_info);
            });
        }
        console.log(this.user_info);
user_info=[];
for(让index=0;index{
此用户信息推送(res);
console.log(此.user\u信息);
});
}
console.log(此.user\u信息);
输出:-


但是我想在循环完成后打印用户信息,执行Fork Join将解决您的问题,我想,请尝试一下

forkJoin(
    this.email.map(email => this.get_student_service.get_student_by_email_id(email)
)
.subscribe(res => {
    console.log(this.user_info); // will print result as an array
})

Fork-Join将解决您的问题,我想,请尝试一下

forkJoin(
    this.email.map(email => this.get_student_service.get_student_by_email_id(email)
)
.subscribe(res => {
    console.log(this.user_info); // will print result as an array
})

您可以使用电子邮件
array
map
方法,而不是
for
循环,然后使用
Observable.forkJoin
同时处理所有结果

大概是这样的:

import { forkJoin } from 'rxjs';

const getStudentsRequests = this.email.map(email =>     
    this.get_student_service.get_student_by_email_id(email);
);

forkJoin(getStudentsRequests).subscribe(resultArray => (this.user_info = resultArray));

您可以使用电子邮件
array
map
方法,而不是
for
循环,然后使用
Observable.forkJoin
同时处理所有结果

大概是这样的:

import { forkJoin } from 'rxjs';

const getStudentsRequests = this.email.map(email =>     
    this.get_student_service.get_student_by_email_id(email);
);

forkJoin(getStudentsRequests).subscribe(resultArray => (this.user_info = resultArray));

在web应用程序中“等待”从请求返回是一种不可行的错误做法。也许这也不是你想要的。你能更具体地描述你的用例吗?我猜打印电子邮件信息并不是你最终真正想做的事情?我想在循环执行后打印我的全部收藏在web应用程序中等待请求返回是一种不可行的错误做法。也许这也不是你想要的。你能更具体地描述你的用例吗?我猜打印电子邮件信息并不是你最终真正想做的事情?我想在循环执行后打印我的整个集合。它给了我一个类似的属性“forkJoin”在类型“typeof Observable”上不存在,而不是
Observable。forkJoin(…
仅使用
forkJoin(…
并从
rxjs
导入它,如下:
从'rxjs'导入{forkJoin};
先生,你能检查一下吗:-它给我一个类似的属性“forkJoin”在'typeof Observable'类型上不存在,而不是
Observable。forkJoin(…
仅使用
forkJoin(…
并从
rxjs
导入它,像这样:
从'rxjs'导入{forkJoin};
先生你能检查一下吗:-没有任何东西在打印
forkJoin(this.email.map((email)=>this.get_student_服务。通过电子邮件获取学生id(email))。订阅((res=>{console.log(res);)
我尝试这样的方法
let data=this.email.map((email)=>this.get_student_服务。get_student_by_email_id(email)let obs=forkJoin([data]);obs.subscribe((res)=>{console.log(res)}console.log('Execute');});
输出:-[Observable]没有任何东西正在打印
forkJoin(this.email.map((email)=>this.get\u student\u service.get\u student\u by\u email\u id(email))).subscribe((res)=>{console.log(res);}
我尝试这样的方法
let data=this.email.map((email)=>this.get\u student\u service.get\u by\u email\u id(email)让obs=forkJoin([data]);obs.subscribe((res)=>{console.log(res)})console.log('Execute');});
输出:-[Observable]