<template>
<div @click="getproise">
点击链式promise调用-场景:三个接口依次调用--省市区
</div>
</template>
<script>
export default {
data(){
return{
}
},
methods: {
getProvince(){
var that = this;
return new Promise(function(resolve, reject){
that.$allAxios(that, 'getProvince', {
xx: '',
xx: '',
}, (res) => {
resolve(res.data.data)
},(fail)=>{
console.log(fail.data)
reject(fail.data.errorMsg);
})
});
},
getCity(data){
var that = this;
return new Promise(function(resolve, reject){
that.$allAxios(that, 'getCity', {
xx: ''
}, (res) => {
resolve(res.data.data)
},(fail)=>{
console.log(fail.data)
reject(fail.data.errorMsg);
})
});
},
getDistrict(data){
var that = this;
return new Promise(function(resolve, reject){
that.$allAxios(that, 'getDistrict', {
xx: ''
}, (res) => {
resolve(res.data.data)
},(fail)=>{
console.log(fail.data)
reject(fail.data.errorMsg);
})
});
},
getproise(){
this.getProvince()
.then((data)=>{
return this.getCity(data)
})
.then((data)=>{
return this.getDistrict(data)
})
.catch((err)=>{
console.log(err)
})
}
},
}
</script>
function allAxios(_this, url, data, resp, down, fail, isYapi) {
let new_url = baseUrl + apiUrl.api[url]
new_url = isYapi ? yapi + apiUrl.api[url] : new_url
data = _this.$qs.stringify(data);
axios({
url: new_url,
data: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
method: isYapi ? 'GET' : 'POST',
}).then(res => {
if (res.data.success == 0) {
_this.$toast({
message: res.data.errorMsg,
duration: 1000
})
down && down.call(this, res)
} else if (res.data.success == 1) {
resp(res)
}
})
}
调用:
this.$allAxios(this, 'url路径名', {
xxx:xxx,
xxx:xxx
},(res) => {
},down => {}, fail => {})