взгляните на мой код.
Мой setInterval отправляет не более 10 запросов.
И перестаёт работать. И всегда получает ответ от сервера.
Почему это происходит и как с этим бороться? Я попытался использовать axios с той же проблемой.
setInterval(function() {
console.info('i'm here')
fetch(`/api/....`, {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
referrerPolicy: 'no-referrer'
}).then((res) => {
console.info('I'm here')
console.info(res)
}).catch((err) => {
console.info(err)
})
}, 1000);
Иногда вылетает и такая ошибка:TypeError: NetworkError when attempting to fetch resource.
@jfriend00 Ой. Я написал это от руки. Поправил вопрос. (у меня ПОСТ).
Теперь вы показываете POST без тела.
Трудно сказать без кодов на стороне сервера, но я могу предположить, что в вашем экспресс-приложении есть некоторые ограничения, которые ограничивают количество ваших запросов до 10. Это не имеет ничего общего с вашим javascript-кодом, который без проблем запускает более 10 запросов. Как вы можете видеть в этой статье Ограничение скорости,
const express = require("express");
const indexRoute = require("./router");
const rateLimit = require("express-rate-limit");
const app = express();
const port = 3000;
app.use(
rateLimit({
windowMs: 12 * 60 * 60 * 1000, // 12 hour duration in milliseconds
max: 5,
message: "You exceeded 100 requests in 12 hour limit!",
headers: true,
})
);
Вы можете ограничить доступные запросы, изменив значение max
.
При условии, что ваш сервер взаимодействует, нет причин, по которым ваш код JavaScript не должен работать:
var i=0,
iv=setInterval(function() {
console.info(`I'm here: ${++i}`);
fetch(`https://jsonplaceholder.typicode.com/users`, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({newId:i})
}).then(r=>r.json()).then(res=>{
console.info(`I'm back: ${res.newId}`);
console.info(res);
if (i==25) clearInterval(iv);
}).catch((err) => {console.info(err)});
}, 1000);
(В ваших console.info
было несколько опечаток, которые я исправил.)
Ничего общего с вашей конкретной проблемой, но, к вашему сведению, бессмысленно отправлять
'Content-Type': 'application/json'
с запросом GET.Content-Type
применяется к содержимому тела, которое вы отправляете с запросом (а не к тому, что вы надеетесь получить в качестве ответа), и, поскольку тела с запросом GET нет, бессмысленно вообще устанавливать заголовокContent-Type
на GET-запрос. ЗаголовкиAccept
сообщают серверу, какой тип ответа вы хотите получить.