簡體   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