【发布时间】:2014-06-21 03:46:28
【问题描述】:
我的功能:
function dnsCheck(domain,tld) {
var dns = require('dns')
dns.lookup(domain+'.'+tld, function (err, addresses) {
if (err) return false // means domain avl
else return true // means domain not avl
})
}
我的条件语句:
if(domain_validator(domain,tld) && !dnsCheck(domain,tld)) {
res.end("avl")
}
else {
res.end("not avl")
}
domain_validator 函数只是一个正则表达式检查器,如果通过则返回 true,否则返回 false。
我正在使用 express 框架。如何使用回调、承诺(Q 库)或生成器(koa 框架)重构我的代码,以便与异步“dns.lookup”函数很好地配合? 谁能使用这三种方法修改我的代码?
【问题讨论】:
-
您无法从
dnsCheck()函数返回答案,因为dns.lookup()是异步的,它会在dnsCheck()已经完成并返回之后的某个时间返回。您当前的返回值只是被返回到网络处理代码的深处并且无处可去。您可能希望将回调传递给dnsCheck(),并在获得dns.lookup()结果时调用该回调。这就是异步编程以及你必须如何使用异步操作来完成它。 -
是的。您要问的是一项艰巨的任务。我将在下面提供回调(可能还有承诺)的答案。
标签: javascript node.js asynchronous callback promise