我有一个简单的HTTP GET
函数,只需要在函数中返回响应,但现在这个函数正在返回void
。
sitechecks.js
var checkSite = () => {
https.get('https://itmagazin.info', (res, err) => {
if (res.statusCode === 200 && res.statusMessage === 'OK') {
return `The site returned: ${res.statusMessage}`
} else return `Error, the site returned: ${err.message}`
})
}
module.exports = checkSite
当我在index.js
中导入模块时,console
会返回[Function: checkSite]
而不是值本身。
// Index.js
var extSiteCheck = require('./sitechecks')
// This console prints [Function: checkSite] instead of "OK"
console.log(extSiteCheck.checkSite)
但是,如果我在函数return
上添加http.get()
语句,则console
会打印undefined
。所以我认为这undefined
是一个进步,但我不明白它为什么会返回undefined?
( checkSite 功能中的return http.get()
)
任何帮助,建议表示赞赏。
答案 0 :(得分:1)
由于JavaScript中的回调是异步的,因此您无法从回调中返回。
这意味着这个
console.log(extSiteCheck.checkSite)
在请求返回之前运行。
您可以在回调中尝试控制台记录(而不是尝试返回值),以便在实践中看到这一点。但基本上,无论您尝试使用get
请求的结果实现什么,都需要在内部进行回调。