为什么.then在此处的解析功能之前运行?

时间:2019-12-09 15:24:28

标签: javascript

我有这段代码,如果我注释掉.then部分,则该帖子效果很好,但是如果我将其保留下来,则该帖子将不会通过。我该如何解决这个问题?

      axios.post('http://localhost:5000/exercises/add', exercise)
                .then(res => console.log(res.data))
                .then(window.location.href = '/')
                .catch(err => console.log(err))

2 个答案:

答案 0 :(得分:4)

window.location.href = '/' 不是功能

立即对其进行评估,并将结果传递到then()(由于结果不是函数,因此没有用)。

执行上一行的操作:

  axios.post('http://localhost:5000/exercises/add', exercise)
        .then(res => console.log(res.data))
        .then(log_result => (window.location.href = '/'))
        .catch(err => console.log(err))

更好的是,由于您没有得到console.log的承诺,因此只需一个then()

  axios.post('http://localhost:5000/exercises/add', exercise)
        .then(res => {
            console.log(res.data);
            window.location.href = '/';
        })
        .catch(err => console.log(err))

答案 1 :(得分:1)

由于某些原因,您有2个then,这是不必要的。尝试将两者结合在一起

axios.post('http://localhost:5000/exercises/add', exercise)
  .then(res => {
    console.log(res.data)
    window.location.href = '/'
  })
  .catch(err => console.log(err))