2016-08-19 3 views
1

Одна из функций внутри класса машинописного текста возвращает Promise<string>. Как разворачивать/давать значение внутри этого обещания.Получите значение внутри знака Promise

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

functionB(): string { 
    return this.functionA() // how to unwrap the value inside this promise 
} 
+1

Вы не можете непосредственно получить значение из обещания. Вы используете обработчик '.then()' для обещания получить доступ к значению. – jfriend00

+0

это просто невозможно, вы не можете играть с вещами, которые вы купили, прежде чем они были доставлены, даже если у вас есть уведомление о доставке; или парень в магазине обещал вам, что пакет уже в пути. Обещания управляют временем, Строка, которую вы хотите, просто еще не существует, и нет способа сказать, когда это будет, кроме 'then()'. 'functionB()' должен вернуть Promise, нет никакого способа обойти это. – Thomas

ответ

3

Как разворачивать/выход значение внутри этого обещания

Вы можете сделать это с async/await: https://basarat.gitbooks.io/typescript/content/docs/async-await.html

Подробнее

Не обманывайте себя, думая, что вы просто пошли от асинхронных для синхронизации, это просто обертка .then: https://basarat.gitbooks.io/typescript/content/docs/async-await.html#generated-JavaScript

3

Попробуйте

functionB(): string { 
    return this.functionA().then(value => ...); 
} 
+0

все еще возвращает 'Promise ' – Rjk

+0

@Rjk в 'then' функции' значение' является 'string' –

+0

да, я это понимаю. Мне нужно вернуть 'string', а не' Promise '. – Rjk

Смежные вопросы