我有以下TS-方法。当我设置的两个断点#1和#2首先击中#1我的所有对象之后,它击中#2我的所有问题。
在我看来,应该是在另一份订单。
public getBuild(val) {
let j_jobs: any;
for (const project of val.projects) {
for (const job of project.jobs) {
this.httpService.get(job.url + 'api/json',
{
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Basic TOKENREMOVED'
})
})
.subscribe(
data => {
j_jobs = data; //#2
}
);
}
}
console.log(j_jobs); // #1
}```
Can anybody tell me, why angular works like that?
这是异步的编码。
在Javascript中,你只能有一个线程。
当您使用异步代码,如许诺,观测量和AJAX,你问你的应用程序,使一些东西,然后做一些事情,而等待的过程来完成,一旦过程结束,继续回调。
这允许你创建无阻塞的过程。试想一下,如果你有等待你的HTTP调用来完成,并且他们采取了各10数秒不是很人性化!
在这种情况下,你可以使用观测量从RxJS,并进行HTTP调用。因此,它是异步的!