通过获取将响应Cookie分配给const变量

时间:2018-11-27 18:31:06

标签: javascript typescript

我是javascript /打字稿初学者,但遇到了问题。我有一个正在登录的函数,我想将cookie放在const变量中以用于将来的请求。

当我在下面添加console.log(token)时,我总是不确定,也不知道为什么。但是,当我在函数内进行console.log(cookie)时,cookie会被解析并正确返回。如何使用回调设置const token?我试图在回调中设置值,但是没有用:(

const authLink = setContext((_, { headers }) => {
  const token = loginFunction(cookie => {
    return cookie //This doensn't work!
  })

  return {
    headers: {
      ...headers,
      Cookie: token
    }
  }
})

loginFunction定义如下:

function loginFunction(callback: (cookie: string) => void) {
  fetch('https://base_url.com/api/login', {
    method: 'post',
    body: JSON.stringify(body),
    headers: { 'Content-Type': 'application/json' }
  })
    .then(response => {
      callback(
        response.headers
          .get('Set-Cookie')
          .split(';')
          .map(c => c.trim())
          .filter(cookie => {
            return (
              cookie.substring(0, 'session'.length + 1) === 'session='
            )
          })
          .map(cookie => {
            return decodeURIComponent(cookie)
          })[0] || null
      )
    })
    .catch(err => {
      // tslint:disable-next-line:no-console
      console.error('[LOGIN ERROR]: ', err.toString())
    })
}

0 个答案:

没有答案