提问者:小点点

Public-IP返回promise


我试图使用一个名为public-ip的包,但是当我在github上使用这个示例时,我不能使用异步代码之外的变量

我尝试过各种解决方案,通过制作函数

function GetAddress() {
    return await publicIp.v4()
}

但这些只是返回一个承诺,我已经尝试谷歌如何不得到一个承诺/得到IP从它,但没有任何运气。

如有任何帮助,不胜感激


共2个答案

匿名用户

定义一个异步函数,并按如下方式使用它:

async function GetAddress () {
    return await publicIp.v4();
}

var address;
GetAddress()
    .then( result => {
        address = result;
        console.log(address);
    });

如果要使用格式“address=GetAddress()”,则需要在带有await的异步函数中执行此操作:

async function GetAddress () {
    return await publicIp.v4();
}

async function useGetAddress(){
    address = await GetAddress()
    console.log(address);
}   

useGetAddress();

匿名用户

.then()可能会解决您的问题:

publicIp.v4()
  .then(ip => {
    // ip is the value, do your logic here
    console.log(ip)
  })
  .catch(error => {
    // if it throws an error, you can catch it and suppress it here
    throw error;
  });

请参阅MDN上的promise.then()