在Promise Typescript中获取值

Rjk*_*Rjk 4 javascript promise typescript es6-promise

Typescript类中的一个函数返回一个Promise<string>。我该如何实现承诺中的价值?

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

functionB(): string {
   return this.functionA() // how to unwrap the value inside this  promise
}
Run Code Online (Sandbox Code Playgroud)

Sur*_*yan 7

尝试这个

functionB(): string {
   return this.functionA().then(value => ... );
}
Run Code Online (Sandbox Code Playgroud)

  • 仍然返回一个 `Promise&lt;string&gt;` (11认同)
  • 是的,我明白。我需要返回`string`,而不是`Promise&lt;string&gt;`。 (5认同)
  • @Rjk 你不能返回字符串。你必须返回承诺,并在调用函数中将 `then` 中的值分配给你的变量 (3认同)
  • `functionA` 是异步的,因此你不可能通过 `functionB` 从中返回单个 `string` 值。您可能会通过将 `callback` 传递给 `functionB` 来解决问题,但这会破坏在两者之间放置 `functionB` 的目的。@SurenSrapyan 的回答是正确的,你应该在 `.then()` 中进一步处理 `string`。 (2认同)
  • @SurenSrapyan 我不赞成这个答案,因为你没有回答 Rjk 的问题;你回答了一个不同的问题,然后在你的评论中告诉 Rjk 原来的问题是错误的。 (2认同)

bas*_*rat 5

我如何解开/产生承诺中的价值

您可以使用async/ 来做到这一点awaithttps : //basarat.gitbooks.io/typescript/content/docs/async-await.html

更多

不要愚蠢地认为您刚刚从异步转到了同步,它只是包装.thenhttps : //basarat.gitbooks.io/typescript/content/docs/async-await.html#genic-JavaScript