我的异步JavaScript在另一个函数的中间执行

我的异步JavaScript在另一个函数的中间执行,javascript,vue.js,asynchronous,promise,callback,Javascript,Vue.js,Asynchronous,Promise,Callback,我试图在Vue.js中的另一个函数之后执行一个函数。我已经尝试过异步/等待回调函数,.then,但它不想一个接一个地加载。什么是可能的解决方案 auth_mixin.js: async auth () { console.log("authban") var token = this.getCookie("token") var jsonData = {} jsonData["token"] = to

我试图在Vue.js中的另一个函数之后执行一个函数。我已经尝试过异步/等待回调函数,.then,但它不想一个接一个地加载。什么是可能的解决方案

auth_mixin.js:

async auth () {
            console.log("authban")
            var token = this.getCookie("token")
            var jsonData = {}
            jsonData["token"] = token
            console.log(jsonData)
            var bodyFormData = new FormData();
            bodyFormData.append('data', JSON.stringify(jsonData));
            axios({
                    method: 'post',
                    url: 'backend/index.php?action=checkAuth',
                    data: bodyFormData,
                    headers: {'Content-Type': 'multipart/form-data'}
                    })
                    .then(function (response) {
                      console.log(response);
                      if(response.data.status==="OK"){
                        console.log("ok")
                        return true;
                      }else{
                        console.log("nem ok")
                        return false;
                      }
                    })
                    .catch(function (response) {
                        console.log(response);
                        return false;
                    });
           }
Navbar.vue:

created () {
    var result=false
    this.auth().then(this.checkIfLoggedIn(result))
  },
  methods: {
      checkIfLoggedIn (isLoggedIn) {
        console.log("na ez lesz az erdekes   "+isLoggedIn)
      if(isLoggedIn === true){
        console.log("true")
        document.getElementById("logged_out").style.display="none";
        document.getElementById("logged_in").style.display="block";
      }else{
        console.log("fail");
      }
    }
  }

你有两个问题

首先:
this.checkIfLoggedIn(结果)
立即调用
checkIfLoggedIn
。您需要将函数传递给
,然后

this.auth().then(() => this.checkIfLoggedIn(result))
第二:通过该更改,当
auth
解析时,调用
checkIfLoggedIn

那么
auth
什么时候解析?好的,它是用
async
关键字定义的,所以它在
返回
时解析(除非它返回一个承诺,在这种情况下,它采用该承诺)

那么它的回报是什么呢?它没有
return
语句,因此在调用
axios
后立即返回
undefined
(因为您没有等待它)

如果
return
ed了
axios(…).etc的返回值,则在该承诺得到解决之前,它不会得到解决


(旁白:您使用的是
async
,您可能应该重构为使用
wait
尝试{}catch(){}
而不是
。然后()
.catch()
)。

第一个明显的问题。。。问题,
。然后
需要一个函数作为参数,其他任何东西都会被忽略(在本例中立即执行)-另一个问题,为什么要使用
var result=false
并将
result
传递给
this.checkIfLoggedIn
而不仅仅是
this.checkIfLoggedIn(false)
-因为这是你的代码唯一能通过的东西。非常感谢你,我现在完全明白了!
this.auth().then(() => this.checkIfLoggedIn(result))