似乎无法获得变量。保持未定义

时间:2018-03-19 16:46:59

标签: node.js npm

我最近开始开发Node.js,我仍然认为是菜鸟。

const publicIp = require('public-ip');

publicIp.v4().then(ip => {
    console.log(ip);
});

正如您在上面的代码中看到的那样,我实际上希望获得公共IP。

但是,我完全不知道如何获取IP变量,以便我可以使用它。如果你有类似的帖子,请不要犹豫,关闭并重定向我。

1 个答案:

答案 0 :(得分:0)

Node是一个单线程框架。你有什么异步功能。所以简而言之,你不能将变量“带”出函数。但是,您可以调用下一个函数并将ip变量传递给它。例如:

const publicIp = require('public-ip');

publicIp.v4().then(ip => {
    myIPFunction(ip);
});

function myIPFunction(ip){
    //Do something with your IP here
}

您的IP值最初显示在称为“回调”的内容中。同样,因为node是单线程框架,所以它不想等待进程调用完成。因此,它支持线程的其余部分,它允许进行这些回调。但这也意味着你无法定义或引用一个尚不存在的变量。所以有点像

const publicIp = require('public-ip');
var myIP;
publicIp.v4().then(ip => {
    myIP = ip;
});
Console.log(myIP);

无效,因为“ip”变量尚不存在,因此没有填充myIP字段。

您可以通过这些文章了解更多相关信息

https://nemethgergely.com/async-function-best-practices/

https://medium.com/@thejasonfile/how-node-and-javascript-handle-asynchronous-functions-7feb9fc8a610