Javascript 承诺就不会';不能异步工作?
我有以下问题。我需要从REST服务器返回值。一切都很好,我得到了我想要的,但有一个小问题。异步不工作,我不知道为什么。我将通过图片向您展示我的代码和结果 代码 并导致铬污染Javascript 承诺就不会';不能异步工作?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我有以下问题。我需要从REST服务器返回值。一切都很好,我得到了我想要的,但有一个小问题。异步不工作,我不知道为什么。我将通过图片向您展示我的代码和结果 代码 并导致铬污染 ngOnInit() { this.error = this.getBlockedText(); } private getBlockedText(): string { let customTxt; this.proxy.core.getUISettings({}).then(res =>
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
直接放在启动异步函数的代码之后,因此它在异步函数完成之前运行。请参考此
如果您对异步调用有疑问。最后一部分在异步调用之前运行,因此您的问题请复制粘贴您的代码。。。这将有助于我们帮助您不将代码作为图像发布。此外,您隐藏了代码中唯一有趣的部分…为什么要审查代码?此外,我要注意的是,应该返回承诺本身,而不是值,因为定义太晚了