I am new to JavaScript and very new to node.js framework, just started using it a few days ago. My apologies if my code is nonsensical, the whole idea of promises and callbacks is still sinking in. That being said my question is the following I am trying to figure out if certain request to websites are successful or cause an error based on the range of their status code response. I am working with an array of websites and what I've done so far is below, I do however get a TypeError: Cannot read property 'then' of undefined on my local machine with node.js installed and can't figure out why.
const sample = [
'http://www.google.com/',
'http://www.spotify.com/us/',
'http://twitter.com/',
'http://google.com/nothing'
]
const http = require('http')
const getStatusCodeResult = (website) => {
http.get(website, (res) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
let statusCode = res.statusCode
error = statusCode >= 400 && statusCode <= 500 ? `error: ${website}`: null
if (error) {
reject(error)
} else if (statusCode >= 200 && statusCode <= 300) {
resolve(`Success: ${website}`)
}
}, 0)
})
})
}
// LOOP PROMISES
const getAllStatusCodeResult = (websites) => {
websites.forEach((website) => {
getStatusCodeResult(website)
.then((result) => {
console.log(result)
})
.catch(error => {
console.log('error', error)
})
})
}
getAllStatusCodeResult(sample)
Ideally I would want the result to be printed as the example below, but for now I am just using console.log to figure out if the code even works.
// Example Printout
{
success: ['https://www.google.com/', 'https://www.spotify.com/us/',
'https://twitter.com /' ],
error: [''http://google.com/nothing']
}