# JavaScript是單執行緒的程式
單執行緒(Single Thread):一次只能做一件事
多執行緒(Multi Thread):可以同時做很多件事
# 同步(Synchronus)
function all(){
let washingmachine = '洗衣機';
let sink = '水槽';
repair(washingmachine, sink);
badminton();
computer();
}
function repair(appliances1, appliances2){
console.log('修'+appliances2);
console.log('修'+appliances1);
}
function badminton(){
console.log('打羽毛球');
}
function computer(){
console.log('看電腦');
}
all();
依序執行
# 非同步(Asynchronus)
function all(){
let washingmachine = '洗衣機';
let sink = '水槽';
repair(washingmachine, sink);
badminton();
computer();
}
function repair(appliances1, appliances2){
console.log('修'+appliances2);
setTimeout (function(){
console.log('修'+appliances1);
},0)
}
function badminton(){
console.log('打羽毛球');
}
function computer(){
console.log('看電腦');
}
all();
非同步的行為會被放到事件佇列(Event queue)裡面,等待all();同步執行完成後才會執行事件佇列裡面的修洗衣機這個行為,而這邊的非同步行為是setTimeout這個函式,雖然設了0秒,但因為放在事件佇列裡面,所以是整個程式執行完才會執行事件佇列裡面的函式