У меня есть один сценарий, я должен сделать запрос xhr / fetch к бэкэнду. Моя база данных в бэкэнде очень большая. Так что ответ на фронтэнд занимает много времени. Но запрос на выборку во внешнем интерфейсе истекает через 2 минуты или около того. Как увеличить время ожидания для запроса fetch / xhr?
Мой код внешнего интерфейса:
$.ajax({
url: `${fetchUrl()}export-meal/${restaurantID}`,
type: "POST",
dataType: "json",
timeout: 3600000,
success: function(response) { const json = response
if(json.status){
dispatch({type:SUBMIT_MEAL_SUCCESS})
// jsonexport(JSON.parse(json.data),function(err, csv){
jsonexport(JSON.parse(json.data),function(err, csv){
if(err) return console.log(err);
fileDownload(csv, 'meals.csv');
})
}else{
dispatch({type:SUBMIT_MEAL_FAILURE})
}
},
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
alert("got timeout");
} else {
alert(textstatus);
}
dispatch({type:SUBMIT_MEAL_FAILURE})
}
});
Здесь я добавил время ожидания на 1 час. Но выдает ошибку через 1 или 2 минуты
Error: Server returned nothing (no headers, no data)
Когда эта ошибка появляется на веб-интерфейсе. Мой код в бэкэнде работает совершенно нормально и продолжает обрабатывать данные, но это занимает много времени, так как мне приходится обрабатывать около 20000 полей данных.
Ошибка в консоли браузера
POST http://localhost:3003/export-meal/5e5d1231366bdb471a76157a net::ERR_EMPTY_RESPONSE
У меня также есть пробовал с топором ios но он выдает ту же ошибку Мой топор ios код:
await axios({
method:"POST",
url:`${fetchUrl()}export-meal/${restaurantID}`
})
.then(response => response.json())
.then(json => {
if(json.status){
dispatch({type:SUBMIT_MEAL_SUCCESS})
if(json.count > 0) message.warning(`${json.count} meal/s already exist`)
dispatch(getMeal())
}
}).catch(err =>
{
console.log("err",err);
message.error(err)
}
)
А также пробовал с обычным запросом выборки и снова выдает ту же ошибку Мой код запроса выборки:
fetch(`${fetchUrl()}import-meal`,
{
method:"POST",
// body:JSON.stringify({
// "meals":mealfiltered,
// "restaurantID":restaurantID
// }),
body:formData
})
.then(response => response.json())
.then(json => {
if(json.status){
dispatch({type:SUBMIT_MEAL_SUCCESS})
if(json.count > 0) message.warning(`${json.count} meal/s already exist`)
dispatch(getMeal())
}
}).catch(err =>
{
console.log("err",err);
message.error(err)
}
)
Все, что мне нужно сделать, это немного подождать, чтобы мой бэкэнд обработал данные и отправил мне ответ. Мне нужно ждать как минимум 10-15 минут.