setTimeout(function () {
console.log(a)
if(callback) callback()
}, 100 * Math.random())
}
var i = 0
var aTest = function () {
if(i <10) {
doExe(i, aTest)
i++
}
}
aTest()
异步数据转化为同步数据处理的两种情况:第一种:定点定时将异步转化为同步
举例:在A方法中的某处需要调用B方法,并且在拿到B方法的返回值后,才可以继续完成A方法中剩下的功能,但是js的代码是从上至下的运行,会出现B方法还没有走完,A方法的代码已经开始往下走,会拿不到B方法的返回值,这个时候就需要异步获取(A调用B 有一定的位置和时间限制)
解决方法:用async和await
第二种:
举例:在A方法中需要B方法中的值才可以进行下去,但是A方法中不需要调用B方法,可以在代码刚开始就拿到B方法中的值,或者在B方法完成时再调用A方法(调用B方法没有特定的时间点限制)