首先你需要知道 promise 要用then接收或者async await
例如:a() 是一個Promise封裝的方法
// 定義一個變量直接a() 賦值給 b
let b = this.a()
console.log(b) //這裏就會返回 Promise {<pending>}
第一種方式 then 接收 ,也就是收把所需數據在then中得到,後續邏輯也只能在then中實現
let b = this.a()
.then(res =>{
//.then是接收正確返回的信息
console.log(res) // {...}
})
.catch(err =>{
// .catch 返回報錯信息
console.log(err)
})
第二種方式 async await接收:
async c(){
let b = await this.a()
console.log(b) // 現在就是正確返回了 {...}
}
這裏要注意的是 async 和 await 必須是一起的
這裏說下爲什麼會這樣???
Promise是異步執行的, 什麼叫異步呢, 就是你以爲代碼是一行執行完才執行下一行嗎? 不是的, 你promise還沒執行then的時候,就開始執行下一行了,導致獲取的數據出現pending狀態
比如以下用法是有問題的:
let table_id = getTableIdByColumnId(that,id).then(res => {
return res.data.table_id
});
goToTableDetail(that,table_id);
then還沒有return時候,已經開始執行goToTableDetail(that,table_id);,導致table_id 爲object 出現pending情況。
正確用法:
getTableIdByColumnId(that,id).then(res => {
console.info(res);
goToTableDetail(that,res.data.table_id);
});