如何在每次axios请求执行前都弹一个对话框,点击确定才执行axios请求?

我使用

axios.interceptors.request.use(config => {
    if (getToken()) {
        config.headers['token'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
      } else {
        console.log('没有token')
      }
      const role = store.state.permission.roleList.find(role => role.url === config.url && role.confirmFlag === _const.YES)
      console.log(role)
      if (true) {
        MessageBox('是否使用第二人确认登录,账号密码已内置?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          config.headers['confirmUser'] = 'wcsconfirmuser'
          config.headers['confirmPwd'] = '123456'
          // Do something before request is sent
          return config
        })
      } else {
        return config
      }
})

这个样子请求都发不出去了

阅读 3.1k
1 个回答

使用Promise解决了

service.interceptors.request.use(config => {
  return new Promise((resolve) => {
    if (getToken()) {
      config.headers['token'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
    } else {
      console.log('没有token')
    }
    const role = store.state.permission.roleList.find(role => role.url === config.url && role.confirmFlag === _const.YES)
    console.log(role)
    if (true) {
      MessageBox('是否使用第二人确认登录,账号密码已内置?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        config.headers['confirmUser'] = 'wcsconfirmuser'
        config.headers['confirmPwd'] = '123456'
        console.log(JSON.stringify(config.headers))
        // Do something before request is sent
        resolve(config)
      })
    } else {
      resolve(config)
    }
  })
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题