简体   繁体   English

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

[英]NodeJS - Main file not receiving return of a lookupService inside a function

So I have a file called 'myinternet_utils.js' and the following function: 因此,我有一个名为“ myinternet_utils.js”的文件和以下函数:

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

I also have a file called 'server.js', where I have this piece of code: 我还有一个名为“ server.js”的文件,其中包含以下代码:

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

The 'console.log' prints 'undefined'. “ console.log”显示“未定义”。

Why am I not getting the output of the function hasInternet? 为什么我没有得到hasInternet函数的输出?

It seems like the function you are using is asynchronous. 似乎您正在使用的函数是异步的。 Also your function does not actually return anything, so even if it was synchronous you would still get undefined . 同样,您的函数实际上并没有返回任何内容,因此即使它是同步的,您仍然会得到undefined Try this instead, using promises: 尝试使用promises代替:

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);
        });
    });

};

and in the main file 并在主文件中

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

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

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

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