⾃动类型转换、强制类型转换

为何short s1 = 1;是对的,而float f=3.4;是错的?

整数直接量,默认是int型。所以int a = 4L; 会报错,但是long l = 4; 这样不会,因为这样会形成一个自动类型的转换,int类型自动转换为long类型 小数直接量,默认是double类型。所以float f = 3.4; 会报错,由double类型转为float类型是大转小,需要强转。 记住小类型转大类型会自动转换,大类型到小类型需要强转,因为会丢失精度或者溢出。(布尔型不参与,char类型相当于int类型) 整数直接量可以直接赋值给byte,short,char,但是不能超出范围。 byte,short,char型数据参与运算时,先一律转换为int再运算。 

 
short s = 5;
s = s + 10; // 这里会出现编译错误,因为s参与运算,这时会自动转换为int型,s + 10 的值为int型,int型不能直接赋值给short型,需要强转
s += 10; // 这里不会出现错误,因为扩展赋值运算符自带强转功能

axios是一个基于Promise的HTTP客户端,用于浏览器和node.js环境。它提供了一种简洁的API和丰富的配置选项,使得发起HTTP请求变得非常方便。在实际开发中,网络请求可能会因为各种原因失败或超时,这时我们可能需要进行自重试的处理。axios本身不直接支持自重试的功能,但是可以通过扩展拦截器来实现。 以下是一个使用axios拦截器实现请求超时自重试的方法: 1. 引入axios库。 2. 创建axios实例。 3. 使用实例的`interceptors.request.use`配置请求拦截器,以便为每个请求添加超时和重试的逻辑。 4. 使用实例的`interceptors.response.use`配置响应拦截器,以便根据响应状态决定是否重试。 5. 在请求拦截器中,可以设置请求的超时时间,并在超时后根据需要重新发起请求。 6. 在响应拦截器中,如果遇到特定的错误状态码,则可以触发重试逻辑。 示例代码如下: ```javascript const axios = require('axios'); // 创建axios实例 const service = axios.create({ baseURL: process.env.BASE_API, // api的base_url timeout: 60000 // 请求超时时间 }); // 请求拦截器 service.interceptors.request.use( config => { // 在这里可以添加请求的通用配置,比如添加token等 // 设置请求超时 config.timeout = 10000; return config; }, error => { // 对请求错误做些什么 return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( response => { // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据 // 否则抛出错误 return response; }, error => { // 在这里可以统一处理错误 if (error.response && error.response.status === 408) { // 例如请求超时(408)时重试,这里可以根据实际情况自定义重试的逻辑 // 注意:要避免无限重试 return service(error.config); } // 其他状态码错误 return Promise.reject(error); } ); // 使用service发起请求 service.get('/test') .then(response => { console.log('请求成功', response); }) .catch(error => { console.log('请求失败', error); }); ``` 在实际应用中,可能需要根据不同的业务场景调整重试的逻辑,例如设置最大重试次数,避免因为网络问题导致的无限重试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值