Javascript 在承诺类型脚本中获取值
typescript类中的函数之一返回一个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调用返回承诺
承诺
。我如何打开/产生承诺中的价值
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。