js同步异步问题,怎么调用带callback函数的时候改成同步

JavaScript013

js同步异步问题,怎么调用带callback函数的时候改成同步,第1张

var doExe = function (a , callback) {

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方法没有特定的时间点限制)