Angular或Typescript如何工作?

时间:2018-02-01 15:53:24

标签: angular typescript jhipster

我不确切知道Angular或Typescript是如何工作的,我认为在这段代码中,它应该是3 1 2.但它是1 2 3.请帮帮我。

confirmDelete(id: number) {
    this.commentService.queryByStoryId(id).subscribe(
        (res: ResponseWrapper) => {
            this.comments = res.json;
            console.log(3);
        },
        (res: ResponseWrapper) => this.onError(res.json)
    );
    console.log(1);
    console.log(2);
    // for (let i = 0; i < this.comments.length; i++) {
    //     this.commentService.delete(this.comments[i].id);
    // }
    this.postService.delete(id).subscribe((response) => {
        this.eventManager.broadcast({
            name: 'postListModification',
            content: 'Deleted an post'
        });
        this.activeModal.dismiss(true);
    });
}

Code Console

1 个答案:

答案 0 :(得分:0)

这是因为在JavaScript(和TypeScript)中,代码分为两类:

  • 同步代码:

    代码同步执行,因为没有什么可以等待的,你告诉他做点什么就行了。

    这部分代码就是这种情况,只要您输入T`1方法就会执行:

代码部分:

T
  • 异步代码:

    有一些代码执行被延迟,因为你需要在执行自己的代码之前等待一些事情。

这是代码的这一部分:

代码部分:

confirmDelete()

您可以访问服务类 console.log(1); console.log(2); ,并且需要同步执行方法this.commentService.queryByStoryId(id).subscribe( ... ); 。问题是,因为这个方法可能(从它的外观)执行对后端服务的HTTP调用,你想要的是在收到响应后执行一些代码。

您看到的是来自库CommentService的{​​{1}}方法,它允许您在后端工作完成后从HTTP调用中捕获响应。

这意味着queryByStory()方法中的所有内容都是异步执行的新函数 - 当响应准备就绪时。

所以这段代码是异步的,会在延迟后执行:

subscribe()

这就是您见证RxJS而非subscribe()的原因。

但是你又一点一点地学习,所以在尝试编写任何代码之前,先了解一下JavaScript是什么,然后你就会学到你缺乏的基础知识。在尝试使用其他库(如 this.eventManager.broadcast({ name: 'postListModification', content: 'Deleted an post' }); this.activeModal.dismiss(true); 和observables)之前,您将了解哪些1 2 3是有关异步代码的基础知识。

我的意思是我们不能在这教你这个,所以这取决于你。互联网上已有很多关于该主题的内容。