javascript - vue.js 中设备离线时 Axios 不会失败

标签 javascript android vue.js axios nativescript

我有一个 Nativescript vue.js 应用程序,当用户使用 axios 单击登录时,该应用程序会访问端点以获取 token 。

当模拟器手机离线时,仍然会进行 axios 调用,然后执行,就像发出了成功的请求一样,查看网络选项卡,有一个请求,但它永远处于挂起状态,并且 axios 调用立即返回.

如果我在基于浏览器的应用程序中运行 axios,它似乎不会以同样的方式失败。

这是我的调用代码:

   methods:{
            submit()
                { this.axios.post('https://backendauth.free.beeceptor.com/api/login',this.user)
                .then((response) => {
                    console.log('Detected as a success')
                    console.log(response.status)
                    console.log(response)
                    console.log(response.data.success.token)
                    this.data = JSON.stringify(response.data)
                    this.$navigateTo(this.$router['home'])
                }).catch((err)=>{
                    if (err.response.status === 401) {
                        console.log(err)
                    }
                    else
                    {
                        console.log(err.response)
                    }

                    })
                this.submitting = 'form clicked'
            }

我创建了一个存储库来演示这一点

https://github.com/jachno/basicAuth

此图显示设备在线时控制台请求成功

Working Request

这显示了通过网络进行的调用

Network call

这显示了处于飞行模式时的网络待处理请求

enter image description here

现在显示设备处于飞行模式时控制台的外观:

Console with Flight mode enabled

最佳答案

当Http调用失败时,状态设置为null,Axios认为调用成功。因此,解决方法可以是在成功回调时验证您的状态是否为 null。如果为null,则视为失败。

您还可以检查是否connectivity设置为none,以查明您的设备是否真正离线。

您可能想在 Github repo 中提出错误关于这一点。

关于javascript - vue.js 中设备离线时 Axios 不会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54552886/

相关文章:

javascript - 在单页 Svelte 应用程序中设置页面标题的最佳位置/生命周期方法

javascript - Parse.com 多个关系查询

Android - 使用 HttpURLConnection 发布 XML 数据

java - 尝试从其他类获取数据时崩溃

android - 从配套移动应用程序的环境模式唤醒穿戴设备

css - Bootstrap-vue 崩溃 : show state with arrow

javascript - 传递一个值给父组件

javascript - 将 DOM 元素数组缩减为 JavaScript 中最深层次的元素

javascript - 找到出现的字符串并用跨度将其包裹起来

javascript - 使用索引作为 ID VueJS 的动态模态