在做項目的時候有的時候項目緊急,所以只需要知道如何使用一下方法實現相應的功能,沒得停留下來研究理解為什么要這樣使用,所以今天趁不忙就寫一下自己對return的理解,一方面是加深自己的理解,另一方面也希望能幫助到需要的人!
我先拋出一個簡單的問題:return后面可以跟執行語句或者函數么?
答案:可以!
但是有一點,return不論是什么,都是直接返回,即使是語句或者函數也不會執行的!是函數就返回該函數!
下面從一個例子來加深對return用法的理解:
export function getTable() {
return axios.get('xxxx’
).then(function (res) {
return res.data.result.info
}).catch(function () {
})
}
在axios和ajax中經常會用到return,從上面的代碼可以看到有兩個return,每個return的作用都需要理解
首先第一個return后面跟的是axios配置,這個return就是將整個axios返回出來;第二個return是在axios請求成功后將響應數據返回出來,即第二個return就是將axios異步請求的數據返回出來。
這兩點都比較好理解,但是不知道大家有沒有想過為什么要這樣做?
說下我的理解:
函數中有ajax和axios調用的有異步和同步,是異步的話里面如果有return,在函數外層(函數是指getTable())調用的時候會取不到數據,除非換成同步。如果想異步取到數據,就需要在函數外層也加個return,相當於把ajax或者axios 整個配置返回出來,返回出來的數據格式是[object,promise],所以函數執行獲得的數據格式就是[object,promise],然后使用.then()的形式將里面返回的數據拿出來!
mounted() {
getTable().then((res)=>{this.tableData = res})
//此出先調用getTable()拿到axios的數據,然后在.then()出來結果
}
此段代碼的目的是將axios異步請求的結果返回出來,因為是異步所以不能直接在axios里return數據,所以需要在axios外層也加個return,這樣就可以拿到了。
以上是個人理解!有不對的歡迎批評指正!