.net 4.5 中增加了async/await,使寫異步代碼能像寫同步代碼那樣,甚至偽同步執行,真是個非常好用的東西。不過,有時候我們會希望這些異步代碼能偽同步執行,有時候又希望能真異步執行。所以async/await有很多種搭配來實現這些功能,總共有3種搭配。
?
jquery同步和異步的區別,代碼:
private static async void test(){ff0();await ff1();ff2();}private static async void ff0(){await Task.Run(() =>{Thread.Sleep(1000);Console.WriteLine("Welcome to ff0");});Console.WriteLine("Leave ff0");}private static async Task ff1(){await Task.Run(() =>{Thread.Sleep(1000);Console.WriteLine("Welcome to ff1");});Console.WriteLine("Leave ff1");}private static void ff2(){Task task = Task.Run(() =>{Thread.Sleep(1000);Console.WriteLine("Welcome to ff2");});Console.WriteLine("Leave ff2");}
?
結果:
defer async、Welcome to ff0
Welcome to ff1
Leave ff0
handler異步消息。 Leave ff1
Leave ff2
Welcome to ff2
java異步請求。?
結論:
1.并沒有等待ff0運行完成才運行ff1,但是ff0方法內部是偽同步執行的,也就是說如果你想讓方法內偽同步執行而外面異步執行的話就像ff0那樣寫。
java異步返回結果。2.ff2的運行是等待ff1運行完成之后才運行的,也就是說如果你想讓方法內外都偽同步執行的話就像ff1那樣寫。
3.在ff2中代碼完全沒有順序運行,也就是說如果你想讓代碼異步執行的話就像ff2那樣寫。
?