SetInterval рабочее завершение undefined

взгляните на мой код.
Мой 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.

Ничего общего с вашей конкретной проблемой, но, к вашему сведению, бессмысленно отправлять 'Content-Type': 'application/json' с запросом GET. Content-Type применяется к содержимому тела, которое вы отправляете с запросом (а не к тому, что вы надеетесь получить в качестве ответа), и, поскольку тела с запросом GET нет, бессмысленно вообще устанавливать заголовок Content-Type на GET-запрос. Заголовки Accept сообщают серверу, какой тип ответа вы хотите получить.

jfriend00 08.02.2023 07:22

@jfriend00 Ой. Я написал это от руки. Поправил вопрос. (у меня ПОСТ).

user21170105 08.02.2023 07:33

Теперь вы показываете POST без тела.

jfriend00 08.02.2023 18:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Трудно сказать без кодов на стороне сервера, но я могу предположить, что в вашем экспресс-приложении есть некоторые ограничения, которые ограничивают количество ваших запросов до 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 было несколько опечаток, которые я исправил.)

Другие вопросы по теме