Holen Sie sich ein Wert innerhalb eines Versprechen Typoskript
Einer Funktion innerhalb einer Typoskript-Klasse gibt ein Promise<string>
. Wie kann ich Auspacken/yield der Wert innerhalb dieses Versprechen.
functionA(): Promise<string> {
//api call returns Promise<string>
}
functionB(): string {
return this.functionA() //how to unwrap the value inside this promise
}
Sie können nicht direkt einen Wert aus einem Versprechen. Verwenden Sie eine
es ist einfach nicht möglich, Sie können nicht spielen mit den Sachen, die Sie gekauft haben, bevor es ausgeliefert wurde, auch nicht, wenn Sie eine Empfangsbestätigung; oder der Kerl im laden versprochen, dass das Paket auf dem Weg ist. Verspricht die Verwaltung der Zeit, die Zeichenfolge, die Sie wollen einfach noch nicht dort, und es gibt keine Möglichkeit zu sagen, Wann es sein wird, mit Ausnahme von
.then()
- handler auf das Versprechen zu erhalten, den Zugriff auf den Wert.es ist einfach nicht möglich, Sie können nicht spielen mit den Sachen, die Sie gekauft haben, bevor es ausgeliefert wurde, auch nicht, wenn Sie eine Empfangsbestätigung; oder der Kerl im laden versprochen, dass das Paket auf dem Weg ist. Verspricht die Verwaltung der Zeit, die Zeichenfolge, die Sie wollen einfach noch nicht dort, und es gibt keine Möglichkeit zu sagen, Wann es sein wird, mit Ausnahme von
then()
. functionB()
wieder ein Versprechen, es gibt keinen Weg darum herum.InformationsquelleAutor Rjk | 2016-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es mit
async
/await
: https://basarat.gitbooks.io/typescript/content/docs/async-await.htmlMehr
Nicht getäuscht werden und denken, dass Sie nur ging von async auf sync, es ist nur ein wrapper um
.then
: https://basarat.gitbooks.io/typescript/content/docs/async-await.html#generated-JavaScriptInformationsquelleAutor basarat
Versuchen, diese
Promise<string>
in der
then
Funktion dervalue
ist diestring
ja, das verstehe ich. Ich brauche die Rückkehr der
string
stattPromise<string>
.Sie können nicht wieder string.Müssen Sie Rendite Versprechen und in der aufrufenden Funktion weisen Sie den Wert in der
then
auf variablefunctionA
ist asynchron und daher gibt es keine chance, Sie werden in der Lage sein, um wieder einen einzelnenstring
Wert aus es überfunctionB
. Sie könnten durch zu bekommen, indem eincallback
zufunctionB
, aber das würde Niederlage der Zweck der mit derfunctionB
dazwischen. @SurenSrapyan s Antwort ist richtig, und Sie sollten tun, die weitere Behandlungstring
innerhalb.then()
.InformationsquelleAutor Suren Srapyan