【发布时间】:2018-08-03 02:37:09
【问题描述】:
我是 JavaScript 新手,对 node.js 框架非常陌生,几天前才开始使用它。如果我的代码是荒谬的,我深表歉意,承诺和回调的整个想法仍然深入人心。话虽如此,我的问题是以下我试图弄清楚对网站的某些请求是否成功或导致错误的范围他们的状态码响应。我正在处理一系列网站,到目前为止我所做的工作如下,但是我在安装了 node.js 的本地计算机上得到了TypeError: Cannot read property 'then' of undefined,但不知道为什么。
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)
理想情况下,我希望将结果打印为下面的示例,但现在我只是使用console.log 来确定代码是否有效。
// Example Printout
{
success: ['https://www.google.com/', 'https://www.spotify.com/us/',
'https://twitter.com /' ],
error: [''http://google.com/nothing']
}
【问题讨论】:
标签: javascript node.js callback promise es6-promise