Javascript 角度:可观察到。失同步异常错误

Javascript 角度:可观察到。失同步异常错误,javascript,angular,typescript,Javascript,Angular,Typescript,我尝试使用以下方法在循环中执行许多查询: buildQuestions() { 对于(var i=0;i)此.sections[i].questions=rt, er=>console.log(er), ()=>console.log(“OK”); } }是的,JS就是这样工作的。执行回调时,循环已经完成,因此我将获得长度值。您必须将代码放在一个闭包中: buildQuestions() { this.sections.forEach(section => {

我尝试使用以下方法在循环中执行许多查询:

buildQuestions()
{
对于(var i=0;i)此.sections[i].questions=rt,
er=>console.log(er),
()=>console.log(“OK”);
}

}是的,JS就是这样工作的。执行回调时,循环已经完成,因此我将获得长度值。您必须将代码放在一个闭包中:

buildQuestions() {

    this.sections.forEach(section => {
        this.serviceQue.getQuestionsBySectionId(section.section_id)
            .subscribe(rt => section.questions = rt,
                er => console.log(er),
                () => console.log("OK"));
        }
    });      
}
关于这个问题的更多信息:这里您可以解释为什么会发生这种情况:


顺便说一下,这是一个典型的面试问题

是的,JS就是这样工作的。执行回调时,循环已经完成,因此我将获得长度值。您必须将代码放在一个闭包中:

buildQuestions() {

    this.sections.forEach(section => {
        this.serviceQue.getQuestionsBySectionId(section.section_id)
            .subscribe(rt => section.questions = rt,
                er => console.log(er),
                () => console.log("OK"));
        }
    });      
}
关于这个问题的更多信息:这里您可以解释为什么会发生这种情况:


顺便说一下,这是一个典型的面试问题

使用
let
代替
var
使用
let
代替
var