簡體   English   中英

Javascript函數始終返回未定義

[英]Javascript function always return undefined

我有這個vue2代碼:

checkUser2() {
    var returnValue;
    axios.get(`api/users/CheckUsername/${this.username}`)
          .then(response => {
              returnValue = response.data.error === 0;
          }, errorCallBack => {
              returnValue = false;
          });
    return returnValue;
}

我稱它為:

var a = this.checkUser2();
console.log(a);

並且總是返回undefined。 我究竟做錯了什么?

如果要從此方法返回值,則必須從函數中返回promise ,並使用回調在成功時捕獲結果。

checkUser2() {
    return axios.get(`api/users/CheckUsername/${this.username}`)
      .then(response => response.data.error === 0, errorCallBack => false);
}

當您調用它時:

this.checkUser2().then(value => console.log(value))

我對vue2一無所知,但我確實知道axiosaxios工作,因此,由於您在promise之外返回returnValue ,因此您的函數正在返回returnValue的當前值,該值是undefined

這是因為您要在發出請求之前返回該值。 您需要做出一個Promise,當它解決時,返回該值。

checkUser2() {
  return new Promise((resolve, reject) => {

    var returnValue;
    axios.get(`api/users/CheckUsername/${this.username}`)
    .then(response => {
      returnValue = response.data.error === 0;
      resolve(returnValue);
    }, errorCallBack => {
      returnValue = false;
      reject(returnValue);
    });
  });
}

然后,您只需要像這樣調用它即可獲取值:

this.checkUser2().then(val => {
 a = val;
})

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM