关于登录后第一次调用接口token为undefined的情况,以及带名,匿名,箭头函数区别

1、关于登录后第一次调用接口token为undefined的情况

在我们利用axios.create

const getInstance = () => {
  return axios.create({
    headers: {
      Authorization: `Bearer ${storage.get("token")}`,
      Server: `${Date.parse(new Date().toString())}`, //添加时间戳
    },
    baseURL: API_BASE_URL,
    timeout: 60000,
  });
};
//定义常量defhttp并赋值,抛出,此时无论调用几次defhttp,方法都只会执行一次,因为defhttp现在是个常量,而页面上常量只执行一次
export const defhttp =getInstance();
//箭头函数指向getInstance(),相当于定义了一个匿名函数,匿名函数的地址指向defhttp
//不用let定义的原因,是因为let也是块级作用域,只能在当前页面使用
export const defhttp =()=>getInstance()
//表面理解为 
function defhttp(){
getInstance()
return getInstance
//写成匿名函数后,调用时使用defhttp()
}  

2、带名,匿名,箭头函数区别

带名函数是指函数显示地给出了一个名字的函数,function abs(x){}。
匿名函数是指函数只带有function这个关键字,而没有像abs这种函数名称的函数,如function(){}。
箭头函数表面上相当于匿名函数,并且简化了函数定义。使用方法大多与匿名函数相同——可以当做变量的值、当做参数值、可以自调用,

  1. 带名和匿名函数的区别

== 补充函数地址==:一般理解是函数名即为函数地址,也是函数的入口地址,
区别:匿名函数需要将地址赋值给另一个变量或常量let a,然后再用a来调用函数;而带名函数因为显示地给出了函数名称,所以可以直接用这个函数名称调用。
带名函数返回值是函数体内的返回值,如abs(x)函数的返回值是number变量。函数调用时,直接abs(6)调用。

function abs(x){
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}

而匿名函数,如下所示,函数未显示地给出一个函数名称,但是此处的abs被赋值为这个匿名函数的地址,所以使用时可以直接用abs(-3),诸如此类的调用。

let abs=function(x){ 
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}
  1. 箭头函数
    箭头函数有两种格式,一种是只包含一个表达式,连{ … }和return都省略掉了。
//只有一个return时可以省略return
x => x * x

上面的箭头函数相当于一个匿名函数

function (x) {
    return x * x;
}

当箭头函数包含多条语句,这时候就不能省略{ … }和return:

(x,y) => {
    if (x > 0) {
        return x + y;
    }
    else {
        return -x + y;
    }
}
  1. 箭头函数和匿名函数的不同

箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。

  1. const和return
    const :常量的值不能通过重新赋值来改变,并且不能重新声明,块级作用域不能提升变量
    return的作用:给函数一个返回值;写在return右边的代码 + 即让函数执行完毕后由有个结果
    //*不写ruturn 函数的返回值就是undefined
    //*写了ruturn 没写返回内容返回值还是undefined
    //*如果写了return 后面有东西,那么写什么,该函数的返回值就是什么;
    //*如果写了return 但是后面没有东西,那么该函数的返回值是undefined
    //*多个ruturn 只执行第一层的 后面代码不会执行

下面是本文借鉴的文章地址,
本文的参照链接地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在清除缓存后,如果一个页面需要多次调用接口获取 token,你可以使用以下方法来处理: 1. 使用异步请求:确保每个接口调用是异步的,这样可以避免一个接口调用阻塞其他接口的执行。 2. Promise 链式调用:使用 Promise 来管理接口调用的顺序。在每个接口请求完成后,再发起下一个接口的请求。这样可以确保前一个接口的响应返回后再调用下一个接口。 ```javascript // 使用 Promise 链式调用多个接口 function getToken1() { return new Promise((resolve, reject) => { // 发起 getToken1 接口请求 // 处理成功则调用 resolve(response),否则调用 reject(error) }); } function getToken2() { return new Promise((resolve, reject) => { // 发起 getToken2 接口请求 // 处理成功则调用 resolve(response),否则调用 reject(error) }); } function getToken3() { return new Promise((resolve, reject) => { // 发起 getToken3 接口请求 // 处理成功则调用 resolve(response),否则调用 reject(error) }); } // 调用示例 getToken1() .then((response1) => { // 处理 getToken1 的响应数据 return getToken2(); // 返回一个新的 Promise 对象 }) .then((response2) => { // 处理 getToken2 的响应数据 return getToken3(); // 返回一个新的 Promise 对象 }) .then((response3) => { // 处理 getToken3 的响应数据 // 所有接口请求完成 }) .catch((error) => { // 处理错误情况 }); ``` 通过使用 Promise 链式调用,你可以确保每个接口调用顺序和依赖关系,并在所有接口请求完成后进行处理。 请根据实际情况替换示例中的接口请求代码,并根据需要进行错误处理和数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值