我试图从函数返回布尔答案,并想用if-else语句检查。
function dnsCheck(domain,tld) {
var dns = require('dns')
dns.lookup(domain+'.'+tld, function (err, addresses) {
if (err) return false // means domain not registered
else return true // means domain registered
})
}
我的条件声明:
if(domain_validator(domain,tld) && dnsCheck(domain,tld)) {
res.end("avl")
}
else {
res.end("not avl")
}
第一个函数单独在if语句中起作用,但是当我添加第二个函数" dnsCheck"时,它无法按预期工作。我错过了什么吗?
答案 0 :(得分:0)
像这样重写dnsCheck:
function dnsCheck(domain, tld, callback) {
var dns = require('dns')
dns.lookup(domain + '.' + tld, function(err, addresses) {
callback(err == null);
});
}
然后这样称呼:
dnsCheck(domain, tld, function(isValidDns) {
if (isValidDns) {
// Profit...
}
});
其他函数domain_validator可能也应该是异步的。
并非所有函数都是异步的,但如果你想知道它是否是,那么函数的签名将(通常)有一个函数作为最后一个参数,通常具有function(err, result)
的签名,如dns.lookup
那样。
尝试阅读有关node.js回调的内容。这是一个这样的解释:
http://docs.nodejitsu.com/articles/getting-started/control-flow/what-are-callbacks