Javascript 无法读取axios之外的函数

Javascript 无法读取axios之外的函数,javascript,axios,Javascript,Axios,我有一个isUserLogged()函数,当axios内部满足某个条件时调用它,但是它返回一个错误,称为Uncaught(in promise)ReferenceError。有没有办法在外部调用函数?多谢各位 这是我的密码 axios.post('/webservices/getaccountinfo.ashx?o=all') .then(function (response) { /*Selector*/ var pPanel = document.querySelecto

我有一个isUserLogged()函数,当axios内部满足某个条件时调用它,但是它返回一个错误,称为Uncaught(in promise)ReferenceError。有没有办法在外部调用函数?多谢各位

这是我的密码

axios.post('/webservices/getaccountinfo.ashx?o=all')
  .then(function (response) {
   /*Selector*/ 
    var pPanel = document.querySelector('.product-panel');
    var panelHead = document.querySelector("#pLshow div:nth-child(2)");      
    var userLogged = false;

if(response.data.Email !== null){
     console.log(response.data.Email);
      userLogged = true;
    isUserLogged(response.data.FirstName, response.data.LastName, response.data.Email);

   }

  }).catch(function (error) {
    return Promise.reject(error);
  });

function isUserlogged(fname, lname, email){
     console.log('pass function outside');
}

注意:我没有使用reactJS。

您有一个输入错误。全局作用域中的函数定义为isUserlogged,但如果您有输入错误,则调用isUserlogged

。全局作用域中的函数定义为isUserlogged,但您正在调用isUserlogged

如果要执行自定义回调,我建议使用包装函数。差不多

function isUserlogged(response){
    var pPanel = document.querySelector('.product-panel');
    var panelHead = document.querySelector("#pLshow div:nth-child(2)");      
    var userLogged = false;

if(response.data.Email !== null){
     console.log(response.data.Email);
      userLogged = true;
    isUserLogged(response.data.FirstName, response.data.LastName, response.data.Email);
   }
console.log('pass function outside');
}

function post(resource, url){
    return axios.post(url, resource)
}

post(dataMock,'/webservices/getaccountinfo.ashx?o=all')
.then(isUserLogged))
.catch(function (error) {
    //your catch logic
});

如果要执行自定义回调,我建议使用包装器函数。差不多

function isUserlogged(response){
    var pPanel = document.querySelector('.product-panel');
    var panelHead = document.querySelector("#pLshow div:nth-child(2)");      
    var userLogged = false;

if(response.data.Email !== null){
     console.log(response.data.Email);
      userLogged = true;
    isUserLogged(response.data.FirstName, response.data.LastName, response.data.Email);
   }
console.log('pass function outside');
}

function post(resource, url){
    return axios.post(url, resource)
}

post(dataMock,'/webservices/getaccountinfo.ashx?o=all')
.then(isUserLogged))
.catch(function (error) {
    //your catch logic
});

这是一个可怕的解决方案,但您可以尝试使用eval()@gianfrancescaularecchia谢谢您的回复,为什么您会说它可怕?eval()不是一个解决方案,而是一个绕过问题的策略,在所有情况下,它在您的情况下都是eval(“isUserLogged”(“+response.data.FirstName+”,“+response.data.LastName+”,“+response.data.Email+”);eval()不起作用。这是一个可怕的解决方案,但您可以尝试使用eval()@GianfrancescoAurecchia谢谢您的回答,为什么您会说它可怕?eval()不是一个解决方案,而是一个绕过问题的策略,在所有情况下,它都会在您的案例中起作用的是eval(“isUserLogged”(“+response.data.FirstName+”,“+response.data.LastName+”,“,“+response.LastName+”,”+response.data.Email+“')”;eval()不起作用。哇,有时候我是个怪胎白痴。哈哈,谢谢你注意到了,哇,有时候我是个怪胎。哈哈。谢谢你注意到了,如果我用这个,我可以知道它的优点吗?谢谢你的建议,谢谢。一般来说,在开发应用程序时,你会提出很多服务器请求。每个请求都需要一些配置,如
令牌
appkey
。您不希望每次都配置这些请求。因此,更好的方法是将它们包装在一个config函数中,该函数为所有调用设置初始配置,作为回报,您最终将在一个位置处理所有配置。这对调试和代码更新很有帮助。如果我使用这个,我可以知道它的优点吗?谢谢你的建议,谢谢。一般来说,在开发应用程序时,你会提出很多服务器请求。每个请求都需要一些配置,如
令牌
appkey
。您不希望每次都配置这些请求。因此,更好的方法是将它们包装在一个config函数中,该函数为所有调用设置初始配置,作为回报,您最终将在一个位置处理所有配置。这对于调试和代码更新很有帮助。