Tash1moto
@Tash1moto

Почему ответы одинаковые?

Всем привет.
Есть ссылка, которая при каждом запросе отдает шутки, с сайта tproger.
"https://tproger.ru/wp-content/plugins/citation-widget/get-quote.php?_=1548878205977"

Есть код который делает 5 запросов.
Но почему такое поведение ? ответы должны быть разные,
но в итоге я получаю 5 одинаковых ответов

const https = require('https')
const url = "https://tproger.ru/wp-content/plugins/citation-widget/get-quote.php?_=1548878205977"

let query = new Promise((resolve,reject)=>{
  https.get(url,resp=>resp.on('data',chunk=>resolve(chunk.toString())))
})

(async()=>{
  let queryList = new Array(5).fill(query)
  let results = await Promise.all(queryList).then(data=>data)
  console.log(results)
})()

результат:
=> Promise { <pending> }
[ 'Перед тем, как программировать, полгода подбирал язык программирования.',
  'Перед тем, как программировать, полгода подбирал язык программирования.',
  'Перед тем, как программировать, полгода подбирал язык программирования.',
  'Перед тем, как программировать, полгода подбирал язык программирования.',
  'Перед тем, как программировать, полгода подбирал язык программирования.' ]
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Tash1moto
@Tash1moto Автор вопроса
всё, разобрался.
Обернул промис в функцию, что-бы при вызове возвращала новый элемент а не ссылку на переменную с промисом

const https = require('https')
const url = "https://tproger.ru/wp-content/plugins/citation-widget/get-quote.php?_=1548878205977"

let query = () =>{
	return new Promise((resolve,reject)=>{
		https.get(url,resp=>resp.on('data',chunk=>resolve(chunk.toString())))
	})
};

let queryList = [...Array(5).keys()].map(el=>query())

let main = async()=>{ 
  let results = await Promise.all(queryList).then(data=>data)
  console.log(results)
}

main();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
copist
@copist
Мидл, хочешь стать синьором? http://copi.st/ExhE
Вот это .php?_=1548878205977 - надо генерить динамически
Например так

const url = "https://tproger.ru/wp-content/plugins/citation-widget/get-quote.php"

let query = () =>{
  return new Promise((resolve,reject)=>{
    https.get(url + '?_=' + Date.now(), .... 
    // или так
    https.get(url + '?_=' + Math.random(), ....
};


Иначе может быть закешированный ответ
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 сент. 2019, в 23:10
5000 руб./за проект
18 сент. 2019, в 23:06
10000 руб./за проект
18 сент. 2019, в 22:35
3500 руб./за проект