#javascript #reactjs
#javascript #reactjs
Вопрос:
В Reactjs у меня есть две функции try-catch, перечисленные ниже, и мне нужно обернуть их в функцию promise.all. Кто-нибудь может сказать мне, как, пожалуйста? Я знаю, что сначала я должен превратить эти две функции в promise, но как?
function one(){
let isValid = true;
...
if(isValid){
try{
const response = await AA.sendMsg({XX})
return response
}catch(e){
console.log(e)
}
}
}
function two(){
let isValid = true;
...
if(isValid){
try{
const response = await BB.sendMsg({YY})
return response
}catch(e){
console.log(e)
}
}
}
Комментарии:
1. Сначала вам нужно, чтобы обе функции были
async
использованыawait
в них. И это автоматически заставит их вернуть обещание. Итак, вы можете сделать что-то вродеPromise.all([one(), two()])
Ответ №1:
sendMsg
уже возвращает обещание (по крайней мере, должно, если это не так, то нет смысла использовать await
или вводить обещания).
Обертывание дополнительных обещаний было бы антишаблоном. Не делайте этого.
Просто передайте их Promise.all:
const [responseAA, responseBB] = await Promise.all([AA.sendMsg(...), BB.sendMsg(...)]);
Ответ №2:
ожидание доступно только в том случае, если вы объявляете свою функцию как асинхронную.
Учитывая это, их вызов даст вам обещание без дополнительной работы.
так что просто сделайте:
const result = await Promise.all([one(), two()])