1. 并行改串行

Function sync1 (){
	Console.log(---------1)
}
Function sync2(){
	console.log(----------2)
}
Sync1 ()
Sync2 ()

改造=======》

Function sync1 () {
	Console.log(------1)
Sync2 ()
}

2. 循环非阻塞

const Num = 1
Function sync1 (){
	Num++
}
Function sync2(){
	Num++
}

改造=======》

Const timer = setInterval(function (){
	If (num === 2){
		console.log(‘任务已完成’)
		ClearInterval(timer )
	} else {
		sync[num]()
	}
})
这个方法采用了定时间隔触发器,占用CPU比较多,建议酌情使用

3. ajax改为同步

如在jquery中将async参数设置为false
$.ajax({
	Url: 'xxxx',
	Async: false
})

4.使用第三方框架 Jquery

定义实例
var d1 = $.Deferred();  
var d2 = $.Deferred();  
  
function async1(){  
实例返回信息
    d1.resolve( "Fish" );  
}  
  
function async2(){  
    d2.resolve( "Pizza" );  
}  
  调用方法判断是否完成
$.when( d1, d2 ).done(function ( v1, v2 ) {  
    console.log( v1 + v2 + '已完成');  
});  

5.使用Promise.all

let num = 0
methods1() {
	num ++	
}
methods2() {
	num ++	
}
methods3() {
	if(num==2) console.log('num为2')
}
Promise.all([methods1,methods2])
.then((res)=>{
	if (num ==2) methods3()
})
在methods1&&methods2顺利执行完之后,调用方法methods3
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐