当设备在vue.js中离线时,Axios不会失败

时间:2019-02-06 11:43:55

标签: javascript android vue.js axios nativescript

我有一个nativescript vue.js应用程序,当用户单击使用axios的登录名时,该应用程序会击中端点以获取令牌。

当仿真器电话离线时,仍然会发出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

1 个答案:

答案 0 :(得分:3)

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

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

您可能想在Github repo中提出一个与此有关的错误。