前端 Vue,后端 Java。后端生成 API 供前端調(diào)用。
所有 API 的 URL 地址是同一個(gè),只是對不同的 API 傳遞不同的參數(shù)。
參數(shù)格式如下:
let data = {
'username': 'admin',
'password': 'admin',
'methodName': 'method1',
'boId': 'bo1',
'returnType': 'json',
'parameters': 'param1'
};
username、password、returnType 是固定的,methodName、boId、parameters 會隨著不同的 API 而變化。
前端用 axios 調(diào)用。當(dāng)同時(shí)調(diào)用三個(gè)API時(shí)(URL 相同,params 不同),返回的數(shù)據(jù)會錯(cuò)亂。
axios.get(apiUrl, {params: data1}).then((response) => {
myData1 = response.data
})
axios.get(apiUrl, {params: data2}).then((response) => {
myData2 = response.data
})
axios.get(apiUrl, {params: data3}).then((response) => {
myData3 = response.data
})
期望結(jié)果:
myData1: {'data': 'A'}
myData2: {'data': 'B'}
myData3: {'data': 'C'}
但實(shí)際結(jié)果是,有時(shí)候可以得到期望結(jié)果,有時(shí)候返回的數(shù)據(jù)卻會錯(cuò)亂,比如 myData1 和 myData2 相互調(diào)包,chrome 查看 response 也是錯(cuò)亂的
// response 1、2 也相互調(diào)包
myData1: {'data': 'B'}
myData2: {'data': 'A'}
myData3: {'data': 'C'}
或者是 myData1 和 myData2 返回相同值:
// response 1、2 返回相同值
myData1: {'data': 'A'}
myData2: {'data': 'A'}
myData3: {'data': 'C'}
總結(jié)一下,我的期望結(jié)果是這樣的:
| 參數(shù)(params: data) | 實(shí)際請求URL (Request URL) | 響應(yīng)(Response) | 返回值 (myData) |
|---|---|---|---|
| data1 | Request URL1 | Response1 | myData1 |
| data2 | Request URL2 | Response2 | myData2 |
| data3 | Request URL3 | Response3 | myData3 |
但實(shí)際調(diào)用會經(jīng)常發(fā)生以下兩種錯(cuò)誤情況:
一、其中兩個(gè)API響應(yīng)和返回值調(diào)包
| 參數(shù)(params: data) | 實(shí)際請求URL (Request URL) | 響應(yīng)(Response) | 返回值 (myData) |
|---|---|---|---|
| data1 | Request URL1 | Response2 |
myData2 |
| data2 | Request URL2 | Response1 |
myData1 |
| data3 | Request URL3 | Response3 | myData3 |
二、其中兩個(gè)API響應(yīng)和返回值相同
| 參數(shù)(params: data) | 實(shí)際請求URL (Request URL) | 響應(yīng)(Response) | 返回值 (myData) |
|---|---|---|---|
| data1 | Request URL1 | Response1 |
myData1 |
| data2 | Request URL2 | Response1 |
myData1 |
| data3 | Request URL3 | Response3 | myData3 |
但當(dāng)以上3個(gè)API分別調(diào)用時(shí),每次都可以返回正確結(jié)果。
試過 axios.all \ promise.all ,不行。
請問導(dǎo)致這種問題的原因是什么?前端還是后端的問題?
是不是同一個(gè) URL 的原因?但后端是用一個(gè)現(xiàn)成的框架,只能用這種API形式。
有沒有辦法解決這個(gè)問題?謝謝。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。