Typescript Promise在实际Promise响应前一毫秒返回对象Promise

Typescript Promise在实际Promise响应前一毫秒返回对象Promise,typescript,promise,Typescript,Promise,我正在尝试做一个基本的检查,看看myAnswer是否有答案,我所有的检查功能都工作得很好。我的问题是,在应该返回我从myAnswer获得的字符串的最后一个函数中,它返回的是[object Promise]。我不知道为什么这不是直接返回字符串,而是在我解析承诺时闪烁[object promise] 如果我能得到一些帮助,那就太好了 this.myAnswer = XapiStoreService.retrieveQuestionFillIn(this.app.getStudent(), pages

我正在尝试做一个基本的检查,看看myAnswer是否有答案,我所有的检查功能都工作得很好。我的问题是,在应该返回我从myAnswer获得的字符串的最后一个函数中,它返回的是[object Promise]。我不知道为什么这不是直接返回字符串,而是在我解析承诺时闪烁[object promise]

如果我能得到一些帮助,那就太好了

this.myAnswer = XapiStoreService.retrieveQuestionFillIn(this.app.getStudent(), pages[pageIndex])
                .then((answer:string) => {
                  this.myAnswer = answer;
                }, (reason:string) => {
                  this.myAnswer = '';
                });
你在干什么

this.myAnswer = XapiStoreService.retrieveQuestionFillIn(…).then(…);
它将承诺分配给
myAnswer
。这就是你在承诺达成并覆盖myAnwer之前不久看到的。相反,你可能想要像这样的东西

this.myAnswer = "loading";
XapiStoreService.retrieveQuestionFillIn(this.app.getStudent(), pages[pageIndex]).then((answer:string) => {
    this.myAnswer = answer;
}, (reason:string) => {
    this.myAnswer = 'error';
    console.error(reason);
});

这看起来像是打字脚本。没错@HerohtarIt正在做它应该做的事情。您不能返回一个尚不存在的值,因此它将返回一个承诺。如果您不希望在承诺解析之前设置
this.myAnswer
,请不要在外部表达式中指定
this.myAnswer
。只需让您的
然后
对承诺的回调分配给
this.myAnswer
。在任何情况下,您都无法立即获取值,您必须等待承诺得到解决。您使用的是TypeScript。所以使用类型。如果您这样做了,您将看到myAnswer是用承诺初始化的,然后用字符串初始化的。决定它应该是什么:承诺还是字符串?如果这是一个承诺,您可以使用异步管道来显示它。如果它是一个字符串,那么您不应该将承诺分配给它。只有承诺所解决的价值。