У меня есть этот код, который пытается отследить все перенаправления URL. Console.log () выводит все правильно для отдельных ответов, но когда я пытаюсь вывести результат response.push (), он просто выводит X раз один и тот же результат.
Я использую Node v8.12 и Axios 0.18
const axios = require('axios')
const instance = axios.create({
maxRedirects: 0
})
var HttpResponse = {
status: '',
statusText: '',
location: '',
headers: {}
}
let url = 'url with redirects here'
const doCall = async function(url){
return instance.get(url)
.then((response) => {
let newresponse = HttpResponse
newresponse.status = response.status
newresponse.statusText = response.statusText
newresponse.headers = response.headers
return {
final: true,
response: newresponse
}
})
.catch((err) => {
if( err.response ){
let newresponse = HttpResponse
newresponse.status = err.response.status
newresponse.statusText = err.response.statusText
newresponse.headers = err.response.headers
return {
final: false,
response: newresponse
}
}else{
let newresponse = HttpResponse
return {
final: true,
response: newresponse
}
}
})
}
const start = async function(){
let responses = []
let result = await doCall(url)
console.log(result)
responses.push(result)
while( result.final != true ){
result = await doCall(result.response.headers.location)
console.log(result)
responses.push(result)
}
console.log(responses)
}
start()
Вывод каждого файла console.log, кроме последнего, использующего URL с перенаправлением 301:
{final: false, ...}
{final: true, ...}
Вывод файла console.log (ответы):
[{final: true, ...}
{final: true, ...}]
Почему response.push () не работает должным образом?