角度:首先打印Console.log(11),然后打印console.log(1)。为什么?

时间:2019-03-22 13:34:47

标签: angular typescript

我有一个简单的提交方法,首先打印Console.log(11),然后打印console.log(1)。我需要为什么它会以这种方式运行。

submit(value) {

    this.secServise.getUserById(this.currentUser.mgId).subscribe( uAddrs => {
      this.tempUser = uAddrs;
      console.log(1);
    });

    if (value[this.keyPwd] !== value[this.keyCPwd]) {
      this.messageService.add({
         severity: 'error',
         summary: 'Password and Confirm Password should match',
         detail: '' 
      });
    } else {
      console.log(11);
    }
}

1 个答案:

答案 0 :(得分:1)

这与Angular无关,而与Javascript的工作方式无关。基本上,您的代码不会像您期望的那样同步,因为您的getUserById调用很可能是异步的。

这意味着Java语言不会等到getUserById回调函数被调用。相反,它将继续执行下一行代码,在这种情况下显然是console.log(11)行,因为if语句的计算结果为false。