Чтобы решить, обновите Spring Frame Work до 3.2.0 или выше!
Я думаю, что прежде чем получить ответ от API, он вызывает функцию, потому что, как вы упоминали для большого размера, она не работает, и я не могу увидеть await
в вашем коде. Попробуйте добавить await
к axios
и проверьте. Надеюсь, это поможет вам.
Как сказал @Maneesh, это может быть вызвано тем, что функция вызывается несколько раз, не ожидая ответа. Вы упомянули, что уже добавили таймаут в Axios, но есть известная проблема , из-за которой простое добавление тайм-аута в Axios не работает. (У меня сама эта проблема уже была в прошлом)
Существует обходной путь для установки тайм-аута для запроса - вручную прервать запрос, используя cancelToken
и обычный javascript [112 ]
function setRequestTimeout(source, timeout) {
setTimeout(() => {
source.cancel('timeout')
}, timeout);
}
function getRequest() {
return new Promise((resolve, reject) => {
const timeout = 10000
let source = axios.CancelToken.source()
setRequestTimeout(source, timeout)
try {
const response = await axios.get('/your-address/', {
timeout: timeout,
headers: {
'Content-type': 'application/json'
},
cancelToken: source.token
})
resolve(response)
} catch (error) {
reject(error)
}
})
}
Это работало для меня в прошлом, мое решение основано на комментариях, найденных в этой проблеме, о которой я упоминал ранее, надеюсь, это поможет вам!