promise可以理解为将异步代码用同步的思维去写, 如果没有promise内部请求还没有执行就返回了参数或者空。
promise会阻塞式执行代码,等待回调的结果
//放到F12控制台中更清晰
function resolveAfter2Seconds() {
return new Promise((resolve, reject) => {
setTimeout(() => {
//模拟接口返回的参数
let res = {
code: '0000'
}
if (res.code === '0000') {
resolve(res) //成功调用
} else {
reject(res) //失败调用
}
}, 4000);
});
}
async function asyncCall() {
console.log('1.开始调用异步请求的函数');
const result = await resolveAfter2Seconds(); //函数内部为异步请求promise
console.log(result,'最后返回调用结果'); //四秒后打印出回调
console.log('3.调用reject后代码回继续执行,resolve则终止并抛出异常')
}
asyncCall();
console.log('2.同步代码继续执行')