# 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秒,但因為放在事件佇列裡面,所以是整個程式執行完才會執行事件佇列裡面的函式