Javascript 承诺就不会';不能异步工作?

Javascript 承诺就不会';不能异步工作?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我有以下问题。我需要从REST服务器返回值。一切都很好,我得到了我想要的,但有一个小问题。异步不工作,我不知道为什么。我将通过图片向您展示我的代码和结果 代码 并导致铬污染 ngOnInit() { this.error = this.getBlockedText(); } private getBlockedText(): string { let customTxt; this.proxy.core.getUISettings({}).then(res =>

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

代码

并导致铬污染

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;
}

为什么它不能像我想的那样工作?当然,结果应该是这样的 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;
}
异步不工作

是的

为什么它不能像我想的那样工作

因为您希望它同步工作,并且它是异步的

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

如果您希望承诺解决问题,那么显示1问题,然后显示2问题,然后显示3问题……您必须将每个问题(包括
3
)放入
then()
处理程序中

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

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

请复制粘贴您的代码。。。这将有助于我们帮助您不将代码作为图像发布。此外,您隐藏了代码中唯一有趣的部分…为什么要审查代码?此外,我要注意的是,应该返回承诺本身,而不是值,因为定义太晚了