NodeJS-主文件未收到函数内部的lookupService返回

时间:2019-02-28 10:46:10

标签: node.js express

所以我有一个名为“ myinternet_utils.js”的文件和以下功能:

exports.hasInternet = function () {

	require('dns').lookupService('8.8.8.8', 53, function (err, hostname, service) {
		return hostname;
	});

};

我还有一个名为“ server.js”的文件,其中包含以下代码:

var ieUtils_ = require('./myinternet_utils.js');

console.log( ieUtils_.hasInternet() );

“ console.log”显示“未定义”。

为什么我没有得到hasInternet函数的输出?

1 个答案:

答案 0 :(得分:0)

似乎您正在使用的函数是异步的。同样,您的函数实际上不会返回任何内容,因此即使它是同步的,您仍然会得到undefined。改用Promise尝试一下:

exports.hasInternet = function () {

    return new Promise(function(resolve, reject) {
        require('dns').lookupService('8.8.8.8', 53, function (err, hostname, service) {
            if(err){
                return reject(err);
            }
            resolve(hostname);
        });
    });

};

并在主文件中

var ieUtils_ = require('./myinternet_utils.js');

ieUtils_.hasInternet().then(function(result){
    console.log(result);
})