繁体   English   中英

为什么这个简单的函数在Node.js中不起作用?

[英]Why isn't this simple function working in Node.js?

我正在尝试从函数返回布尔值答案,并想检查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”时,它无法按预期工作。 我想念什么吗?

像这样重写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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM