getActivityData(this.id).then(async (res) => {
if(res.data===1) {
const { data: userPowerData} = await getUserPowerData()
//接口返回数据为{data:true},解构对象并重命名为userPowerData
if(userPowerData) {
console.log('代码执行到此处,已成功获取到userPowerData')
}
}
})
正确使用方法2:
<script>
let a = []
async function fun(){
console.log('开始喽!');
await interface()
console.log(a,'9999');
}
function interface() {
return new Promise((resolve, reject)=>{
setTimeout(()=>{
a = [1,9,22,6]
console.log('已经获取到接口数据!');
resolve()
},2000)
})
}
fun();
</script>
结果:
正常情况下,代码是同步执行的;例如,在函数A的内部调用函数B,要等内部函数B执行完成后,才会执行函数A中在函数B后面的代码。
<script>
let a = []
function fun(){
console.log('开始喽!');
interface()
console.log(a,'9999');
}
function interface() {
for(let i=0; i<10;i++) {
console.log(i);
}
a = [1,9,22,6]
}
fun();
</script>
结果:
但是当函数interface中需要调接口时(我是用setTimeout模拟调接口),此时函数fun中的代码就不是同步执行,而是异步了
<script>
let a = []
function fun(){
console.log('开始喽!');
interface()
console.log(a,'9999');
}
function interface() {
setTimeout(()=>{
a = [1,9,22,6]
console.log('已经获取到接口数据!');
},2000)
}
fun();
</script>
结果: