Javascript 在承诺类型脚本中获取值

Javascript 在承诺类型脚本中获取值,javascript,typescript,promise,es6-promise,Javascript,Typescript,Promise,Es6 Promise,typescript类中的函数之一返回一个承诺。我如何打开/产生承诺中的价值 functionA(): Promise<string> { // api call returns Promise<string> } functionB(): string { return this.functionA() // how to unwrap the value inside this promise } function():承诺{ //api调用返回承诺

typescript类中的函数之一返回一个
承诺
。我如何打开/产生承诺中的价值

functionA(): Promise<string> {
   // api call returns Promise<string>
}

functionB(): string {
   return this.functionA() // how to unwrap the value inside this  promise
}
function():承诺{
//api调用返回承诺
}
functionB():字符串{
返回this.function()//如何展开此承诺中的值
}
试试这个

functionB(): string {
   return this.functionA().then(value => ... );
}
我如何打开/产生承诺中的价值

你可以用
async
/
await
来完成。不要被愚弄到以为你只是从async转到sync,async await它只是
的包装器。然后

functionA(): Promise<string> {
   // api call returns Promise<string>
}

async functionB(): Promise<string> {
   const value = await this.functionA() // how to unwrap the value inside this  promise
   return value;
}
function():承诺{
//api调用返回承诺
}
异步函数B():承诺{
const value=wait this.function()//如何打开此承诺中的值
返回值;
}
进一步的

你不能直接从承诺中获得价值。你在promise上使用
.then()
处理程序来访问该值。这是不可能的,你不能在交付之前玩你买的东西,即使你有交付通知;或者商店里的那个人答应过你包裹已经在路上了。承诺管理时间,你想要的字符串还没有出现,而且除了
then()
之外,没有办法知道它什么时候会出现
functionB()
必须返回一个承诺,这是没有办法的。仍然返回一个
Promise
是的,我理解。我需要返回
字符串
,您不能返回字符串而不是
Promise
@Rjk。您必须返回Promise,并在调用函数中将
中的值分配给变量
function
是异步的,因此您不可能通过
functionB
从它返回单个
字符串
值。您可以通过将
回调
传递给
函数b
来解决问题,但这会破坏将
函数b
置于两者之间的目的@SurenSrapyan的答案是正确的,您应该进一步处理
中的
字符串
。然后()
@SurenSrapyan我否决了这个答案,因为您没有回答Rjk的问题;你回答了一个不同的问题,然后在评论中告诉Rjk原来的问题是错误的。*链接不再可用,并重定向到主页。这也让人感觉很有推广性(尽管,作者心里可能有很好的意图)。请管理员查看。我确实链接到我编写的文档,但我会小心地在
more
/
further
部分下进行链接。为了减少推广的感觉,我添加到了答案正文中,我也遇到了同样的问题,按照上面的建议进行操作,然后以同步方式调用functionB。当您需要promise的结果时,确保任何其他函数仍然是async()=>{value=await functionB()}等等。回答得很好。这有助于我理解TypeScript中的async/await。