#javascript #react-native #async-await
Вопрос:
У меня есть следующий код:
export const blSaveRecord = async (data) => {
const params = new URLSearchParams()
params.append('DocumentNumber', data.DocNumber)
data.People.map((item, index) => {
params.append(`Person[${index}].PersonDoc`, item.PersonDoc)
params.append(
`Person[${index}].Document[0].Base64File`,
`data:image/jpg;base64,${FileSystem.readAsStringAsync(item.image, {
encoding: FileSystem.EncodingType.Base64,
})}`
)
})
//THIS IS THE ISSUE:
console.log(params)
return axios
.post(url_SaveRecord, params)
.then(function (response) {
return {
status: true,
message: '',
}
})
.catch(function (error) {
return {
status: false,
message: error.message,
}
})
})
Проблема в том, что метод readAsStringAsync является асинхронным, но я не могу приступить к работе с await. Я попытался вызвать другую асинхронную функцию, чтобы создать этот метод и дождаться его, но это невозможно.
Вопрос в том… как я могу дождаться завершения асинхронной функции внутри карты? Я не хочу переходить к следующей итерации, пока асинхронность не будет завершена.
Спасибо.
Ответ №1:
Обещать.все асинхронные функции в обратном вызове карты проще реализовать:
пусть ответ=ожидание обещания.все(данные.Люди.карта((элемент, индекс)=>{
//Ваш код
}))
Комментарии:
1. Отличный ответ! Ты попал в точку! Большое спасибо!