承诺然后不工作异步?

时间:2017-07-24 09:35:15

标签: javascript asynchronous promise

我有以下问题。我需要从REST服务器返回值。一切都很好,我得到了我想要的东西,但是有一个小问题。异步不起作用,我不明白为什么。我将通过图像向您展示我的代码和结果。

代码

Title

并导致chrome

enter image description here

为什么它不起作用,因为我想工作?当然,结果应该是 1/2 然后3.感谢您的帮助

js代码

ngOnInit() {
    this.error = this.getBlockedText();
}
private getBlockedText(): string {
    let customTxt;
    this.proxy.core.getUISettings({}).then(res => {
            customTxt = res;
            console.log('1');
    }).catch(err => {
        console.log('2');
    })
    console.log('3');
    return customTxt;
}

2 个答案:

答案 0 :(得分:4)

  

异步无法正常工作

是的,是的。

  

为什么它不起作用,因为我想工作?

因为您希望它同步工作而且是异步的。

  

当然,结果应该是1/2然后是3。

如果您希望承诺解决然后显示1 然后显示2 然后显示3 ...您必须将其中的每一个(包括3处理程序中的then()}。

目前,您已将3直接放在启动异步函数的代码之后,因此它会在异步函数完成之前运行。

答案 1 :(得分:-1)

请参阅此 link如果您对异步调用有疑问。最后一部分在异步调用之前运行,因此您的问题