因为项目中我们的数据请求全都是异步的
在开发中遇到的问题:
本意将数据请求封装成一个方法,并return数据请求结果给变量
如:
let getData = () =>{
//service.getList 为数据请求方法名
service.getList().then(function(rs){
return rs
})
}
var data = getData()
//undefined
因为接口请求是异步,所以导致return的值一直都是undefined
所以可以使用Promise+async实现
function getSomething() {
return new Promise(function(resolve) {
service.getList().then(function(rs){
resolve(rs);
})
});
}
async function asyncFn() {
var returnData = await getSomething();
return returnData
}
var data = asyncFn();
但是这样写的结果是把Promise对象赋给了data
就是因为Promise异步的,所以他不会直接返回值
这也不是我们想要的
还需要再做一个操作
//将这句调用修改
var data = asyncFn();
//修改成下面的调用方式
asyncFn().then(value =>{
var data = value
})