在nuxt-axios反应拦截器中取消承诺。

问题描述 投票:0回答:1

基本上,我的问题和这里的问题一模一样。https:/github.comaxiosaxiosissues583。. 它可以通过 throw new axios.Cancel('Operation canceled by the user.');.. 但我如何在nuxt axios模块中做到这一点?我在文档中看不到它,我试了一下。$axios.Cancel('Error') 但返回的$axios.Cancel不是一个构造函数。

基本上,类似下面的片段就是我想要的东西。

axios.interceptors.response.use(function (response) {
    throw new axios.Cancel('Operation canceled by the user.');
  }, function (error) {
    return Promise.reject(error);
  });

强调 throw new axios.Cancel

axios nuxt.js
1个回答
1
投票

@nuxtjs/axios 不暴露 axios.Cancel您仍然可以导入 axios 直接获取该符号。注 axios 已经是 @nuxtjs/axios所以不需要额外的依赖性。

例子 (用 @nuxtjs/axios v5.11.0):

// plugins/axios.js
import { Cancel } from 'axios'

export default function ({ $axios }) {
  $axios.onResponse((response) => {
    if (response.code !== 200){
      throw new Cancel(response.msg)
    }
  })
}

0
投票

具备 nuxt/axios v5.8.0 是否取消 可用

v5.8.0 增加 CancelTokenisCancel 归入轴心实例


0
投票

似乎nuxt-axios并没有完全相同的东西,但我找到了一个工作方法。

插件axios.js

export default function({ $axios, req, store, redirect, app }, inject) {
  // const source = $axios.CancelToken.source()
  const timeout = process.env.API_TIMEOUT || 10000
  const errorHandling = function(error) {
    console.log(`API ${error}`)
    return new Promise(() => {})
  }
  $axios.onResponse((response) => {
    // Any condition that could be considered an response based on standard response
    if(response.code !== 200){
      throw response.msg
    }
  })
© www.soinside.com 2019 - 2024. All rights reserved.