Ajax請(qǐng)求成功后return無(wú)法接收到返回值的問(wèn)題及解決方案
項(xiàng)目中需要頻繁的用到ajax請(qǐng)求,所以就想用一個(gè)方法將整個(gè)請(qǐng)求封裝起來(lái),直接調(diào)用方法傳遞參數(shù),然后返回請(qǐng)求結(jié)果就可以了。
源代碼如下:
getAddressInfo(lng, lat) { axios.get("/proxy/reverse_geocoding/v3/?ak=" + BDAK + "&output=json&coordtype=wgs84ll&location=" + "" + lat + "," + lng, { dataType: "JSONP" }).then(res => { return res }) }
調(diào)用這個(gè)方法之后,一直無(wú)法接收到return的值,一直都是undefined
后來(lái)百度查看原因是因?yàn)?,ajax是異步請(qǐng)求,當(dāng)js代碼執(zhí)行到這里的時(shí)候,不會(huì)等待異步請(qǐng)求完畢,就直接return了,所以值就一直是undefined
針對(duì)這個(gè)問(wèn)題,我們可以使用promise,就可以解決
return new Promise((resolve, reject) => { 接口請(qǐng)求成功就resolve出去 失敗就reject出去 })
export function getAddressInfo(lng, lat) { return new Promise((resolve, reject) => { axios.get("/proxy/reverse_geocoding/v3/?ak=" + BDAK + "&output=json&coordtype=wgs84ll&location=" + "" + lat + "," + lng, { dataType: "JSONP" }).then(res => { resolve(res) }).catch(err => { reject('') }) }) }
到此這篇關(guān)于ajax請(qǐng)求成功后return無(wú)法接收到返回值的文章就介紹到這了,更多相關(guān)ajax無(wú)法接收到返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
那些年,我還在學(xué)習(xí)Ajax 學(xué)習(xí)筆記
Ajax不用說(shuō),每個(gè)做web開(kāi)發(fā)的同志都知道,因?yàn)樗菍W(xué)習(xí)web開(kāi)發(fā)必經(jīng)之路,不管你是做asp.net,還是javaWeb,還是PHP2012-03-03解決ajax傳過(guò)來(lái)的值后臺(tái)接收不到的問(wèn)題
今天小編就為大家分享一篇解決ajax傳過(guò)來(lái)的值后臺(tái)接收不到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Ajax實(shí)現(xiàn)帶有驗(yàn)證碼的局部刷新登錄界面
很多登錄界面都有驗(yàn)證碼功能局部刷新效果,接下來(lái)通過(guò)本文給大家分享ajax實(shí)現(xiàn)帶有驗(yàn)證碼的局部刷新登錄界面,感興趣的朋友一起看看吧2016-09-09javascript Ajax 類實(shí)現(xiàn)代碼
Ajax已經(jīng)如日中天,針對(duì)Ajax的框架也比比皆是,這里還是獻(xiàn)獻(xiàn)丑,提供一份06年自己寫(xiě)的Ajax封裝類。2009-07-07