为什么封装的request的get必须放在await后面,返回的才是数据
截图中的get前少了一个await,结果输出的result就只是一个promise对象,如果get前加上await返回的才是借口数据。这是啥原理?

相关代码:
import axios from 'axios'
const instance = axios.create({
baseURL: 'https://www.fastmock.site/mock/ae8e9031947a302fed5f92425995aa19/jd',
timeout: 10000
})
export const post = (url, data = {}) => {
return new Promise((resolve, reject) => {
instance.post(url, data, {
headers: {
'Content-Type': 'application/json'
}
}).then((response) => {
resolve(response.data)
}, err => {
reject(err)
})
})
}
export const get = (url, params = {}) => {
return new Promise((resolve, reject) => {
instance.get(url, { params }).then((response) => {
resolve(response.data)
}, err => {
reject(err)
})
})
}18
收起
正在回答
1回答
同学你好,这是ES6的async、await关键字的作用。以如下代码为例(项目代码的简化版),给同学解释一下:
// 使用Promise,异步返回数据
function get() {
return new Promise(resolve => {
resolve('我是具体数据')
})
}
const getData = async () => {
// await等待get方法执行完,并拿到结果
const data = await get()
// 这里才会执行
console.log(data)
}
getData()1、async、await要一起使用,await要写在async中,比如:

2、await是等待的意思,它会等待后面的异步方法执行完毕、拿到结果后,再让代码往下继续执行。比如当await后面的方法,返回的是Promise对象时,使用await就会直接拿到Promise中的数据:

这是二者底层逻辑实现的,关注结果本身就行。
3、当不写await时,get方法是异步的,并且get本身就是Promise对象,所以data肯定是一个Promise对象:

4、如下课程中,细致的讲解过二者的作用:

建议同学回顾一下,这样会理解的更深。
祝学习愉快!



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星