亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異步方法是承諾但返回未定義

異步方法是承諾但返回未定義

一只斗牛犬 2023-03-24 14:00:16
我正在開發 Nuxt.js 應用程序并嘗試使用一種async方法從 api 獲取數據,但該async方法的結果始終是undefined??雌饋砦业姆椒]有等待響應。我不知道我錯過了什么。這是我的代碼methods: {..}async getSomething() {  console.log("getSomething");  if (condition) {    axios      .get("api_url")      .then((response) => {        console.log("getSomething success");        return "success";      })      .catch((error) => {        console.log("getSomething fail 1");        return "fail";      });  } else {    console.log("getSomething fail 2");    return "fail";  }}doSomething() {  console.log("do Something");  this.getSomething().then((result) => {    console.log("result", result);    if (result === "success") {      // do something on success    } else {      // do something on fail    }  });  console.log("end doSomething");}我已經嘗試記錄this.getSomething(),結果是Promise {<pending>}在這里,當一個方法被調用時created () {..}this.doSomething()// doSomething// getSomething// end doSomething// getSomething success// result undefined
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

我認為您的部分問題是您將編寫代碼的異步/等待風格與承諾鏈風格混合在一起。當您返回“失敗”或“成功”時,您通常是從axios.get回調中返回,而不是從getSomething方法中返回。您可能想像這樣重寫代碼:


async getSomething () {

    console.log('getSomething')

    if (condition) {

        try {

            let response = await axios.get('api_url')

            console.log('getSomething success')

            return 'success'

        } 

        catch(error) {

            console.log('getSomething fail 1')

            return 'fail'

        }

    } else {

        console.log('getSomething fail 2')

        return 'fail'

    }

}


查看完整回答
反對 回復 2023-03-24
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號