一只斗牛犬
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'
}
}
添加回答
舉報
0/150
提交
取消