异步获取数据同步获取

异步数据转化为同步数据处理的两种情况:

第一种:定点定时将异步转化为同步

举例:在A方法中的某处需要调用B方法,并且在拿到B方法的返回值后,才可以继续完成A方法中剩下的功能,但是js的代码是从上至下的运行,会出现B方法还没有走完,A方法的代码已经开始往下走,会拿不到B方法的返回值,这个时候就需要异步获取(A调用B 有一定的位置和时间限制)
代码举例:

A () {
    .......
    .......

    this.B()
    ....... //需要B方法中返回的结果
    .......
}
B () {

    返回的结果
}

解决方法:用async和await

async A () {
    
    ........
    
    await this.B()

    ........ 
}


async B () {
    .......
    
    return 返回一个Promise 对象
}

1.好的文章链接:https://www.cnblogs.com/SamWeb/p/8417940.html

第二种:

举例:在A方法中需要B方法中的值才可以进行下去,但是A方法中不需要调用B方法,可以在代码刚开始就拿到B方法中的值,或者在B方法完成时再调用A方法(调用B方法没有特定的时间点限制)

代码举例:

第一种: A不是初始时调用的,就让B在初始时调用

creatd() {
    
    this.B() //在页面刚刷新的时候就获取到了值
}
method () {

    A () {
 
     const a = 0
     
     const c = a + this.b //在调用A方法的时候,此时已经拿到this.b
    }

    B () { this.b = 5 }

}

第二种: A是在初始时调用的,这时就不能让A,B同时在初始时调用,因为js从上到下走,可能都走到A了,

B的返回值还没有拿到,所以最好先调B,拿到B的返回值了,再调A

creatd() {
    
    this.B() //在页面刚刷新的时候就获取到了值
}
method () {

    A () {
 
     const a = 0
     
     const c = a + this.b //在调用A方法的时候,此时已经拿到this.b
    }

    B () { 
        this.b = 5 

        this.A() //可以确定绝对拿到了this.b
    }

}

失误举例:

creatd() {
    
    this.B() 

    this.A() //B的方法可能还没有走完,就开始走A的方法,可能拿不到this.b,因为后台数据的反应速 
               度不同,可能会失误,不建议
}
method () {

    A () {
 
     const a = 0
     
     const c = a + this.b 
    }

    B () { this.b = 5 }

}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值