问下各位大佬,axios请求这个地方有没有可以利用async、await优化的地方?

问下各位大佬,axios请求这个地方有没有可以利用async、await优化的地方?

具体代码如下:
(这是一段在vue框架的element-ui中操作table组件删除的回调函数,其中then后边的axios请求是为了利用数据响应式动态更新表格数据,想请问下有没有async、await的优化方案?)

deleteRow (row) {

this.$confirm('确认删除此条产品吗?删除后无法恢复', '提示', {

confirmButtonText: '确定',

cancelButtonText: '取消',

type: 'warning'

})

.then(() => {

this.$axios

.post('/delProduct', {

id: row.id

})

.then(({ data }) => {

// 重新获取商品列表数据

this.$axios

.post('/getProducts', {

currentPage: 1

})

.then(({ data }) => {

this.changeTableData(data.result)

})

.catch((err) => console.log(err))

// 弹出提示

this.$message({

message: data.msg,

type: 'success'

})

})

.catch((err) => console.log(err))

})

.catch(() => {

this.$message({

message: '已取消“删除”的操作',

type: 'info'

})

})

}


回答:

async/await 本质是 Promise 语法糖,只要出现 Promise 的地方都可以改为用 async/await

const methods = {

async deleteRow(row) {

try {

await this.$confirm('确认删除此条产品吗?删除后无法恢复', '提示', {

confirmButtonText: '确定',

cancelButtonText: '取消',

type: 'warning'

})

} catch (e) {

this.$message({

message: '已取消“删除”的操作',

type: 'info'

})

}

await this.$axios.post('/delProduct', { id: row.id })

// 重新获取商品列表数据

const data = await this.$axios.post('/getProducts', { currentPage: 1 })

this.changeTableData(data.result)

// 弹出提示

this.$message({

message: data.msg,

type: 'success'

})

}

}

对于 Promise.catch()async/await 中需要用 try { ... } catch (e) { ... } 来替代。


回答:

methods: {

// $confirm 是一个函数

confirmed() {

return this.$confirm(...);

},

// axios 请求独立出来

getFirst(params) {

return this.$axios(...);

},

getSecond(params) {

return this.$axios(...);

},

getOther(params) {

return this.$axios(...);

},

errorCallback(error) {

// 处理错误

},

deleteRow(row) {

this.confirmed()

.then(res => this.getFirst(参数))

.then(res => this.getSecond(参数))

.then(res => this.getOther(参数))

.catch(this.errorCallback);

},

// 所以用 async/await 还可以写成

async deleteRow(row) {

try {

await this.confirmed();

const params = await this.getFirst();

const response = await this.getSecond(params);

await this.getOther(response.data.id);

} catch (error) {

this.errorCallback(error)

}

}

}

以上是 问下各位大佬,axios请求这个地方有没有可以利用async、await优化的地方? 的全部内容, 来源链接: utcz.com/p/937142.html

回到顶部