#javascript #reactjs #async-await
#javascript #reactjs #async-await
Вопрос:
Я новичок в javascript, здесь у меня есть следующее graphql
getId = async dataId => {
let finalData = await apolloClient.query({
query: GET_DOOR_ORDER,
variables: {
Id: dataId
}
})
return finalData?.value
}
Теперь я вызываю эту функцию
let orderIdForbuyingSessionsEdit = '';
orderIdForbuyingSessionsEdit = this.getClientOrderIdFromDoorOrder(orderId)
Это выдает ошибку
Type 'Promise<any>' is not assignable to type 'string'.ts(2322)
Как мне получить строку в качестве возвращаемого значения из асинхронной функции.
Комментарии:
1. Ты должен
await this.getClientOrderIdFromDoorOrder(orderId)
2.
async function
Всегда возвращает обещание, в этом вся их цель. Вам все равно нужно будет дождаться результата.
Ответ №1:
Чтобы вызвать асинхронные функции, вам нужно ввести await
ключевое слово, по которому вы производите вызов. Это будет ждать, пока обещание не будет выполнено и не вернет значение.
В тексте вашего вопроса первая getId
функция является хорошим примером асинхронного вызова функции. Вам нужно сделать то же самое и в том месте, где вы его вызываете:
- функция, в которой вы вызываете другую асинхронную функцию, должна иметь
async
префикс ключевого слова - асинхронная функция, которая будет вызвана, должна иметь
await
префикс ключевого слова
Итак, чтобы где-то правильно вызвать вашу getId
функцию, вам нужно действовать следующим образом:
async function myMethod() {
let value = await getId(123);
console.log(value);
}
Подробнее об асинхронности / ожидании читайте здесь.