Javascript 无法读取axios之外的函数
我有一个isUserLogged()函数,当axios内部满足某个条件时调用它,但是它返回一个错误,称为Uncaught(in promise)ReferenceError。有没有办法在外部调用函数?多谢各位 这是我的密码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
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函数中,该函数为所有调用设置初始配置,作为回报,您最终将在一个位置处理所有配置。这对于调试和代码更新很有帮助。