const aa= async (params, isDetails) => {
const { data } = await request.post({xx})
return data
}
aa是一个async函数,返回的总是一个promise实例,而不是data
1. 没有显式return,相当于return Promise.resolve(undefined);
2. return非Promise的数据data,相当于return Promise.resolve(data);
3. return Promise, 会得到Promise对象本身
下图为aa函数调用的返回结果:
data在primseResult里面。aa.then((res)=<{
//这个res就是data
})
Promise是一个构造函数,new Promise()时,接受一个函数作为参数,且这个函数有两个参数,分别是resolve,reject。 而resolve和 reject也是两个函数。在生成实例的时候,里面的函数会立即执行
每一个被实例化出来的promise实例,都有.then() 和 .catch() 两个方法。且这两个方法的调用支持链式操作
then和catch方法是添加在Promise的原型上的。即Promise.prototype.then(), 故所有Promise实例都存在.then()和catch方法
.then((res)=>{},(err)=>{}) 第一个是resolve回调函数,第二个是reject函数。res和err是上次回调的返回值
1、.then((res)=>{ 没有返回值,则默认return undefined 。该resolve函数会返回一个默认的promise对象,状态为resolved,走到下面的.then
},(err)=>{
})
2、.then((res)=>{ //返回一个常量。该resolve函数会返回一个默认的promise对象,状态为resolved,走到下面的.then
return 123
},(err)=>{
})
3、.then((res)=>{
return new Promise(
(resolve, reject) => { resolve('456') }) //返回的是定义好的promise,则返回的状态为这个promise的状态,成功则走.then,失败走.catch
},(err)=>{
})