Suspend修飾符
探討背後的原理
創建Coroutine
簡單創建一個Coroutine
以下為createCoroutine的宣告,這個Coroutine並不會馬上執行。
suspend () -> T是一個Function Type,createCoroutine是suspend () -> T的Extension Function。
參數completion會在執行Coroutine完成後執行,也就是說完成Callback。
回傳值是一個Continuation物件,由於現在只是被創建出來,之後會使用這個回傳值來觸發Coroutine的啟動。
Continuation是一個介面,如果不管Context,作用有點像是使用Callback。
啟動Coroutine
在上面我們已經知道怎麼創建Coroutine了,接下來要怎麼啟動一個Coroutine呢?
回想一下之前提到的概念,Coroutine是一個中斷及繼續執行的函式呼叫,允許函式被暫停(suspended)執行之後再回復(resumed)執行。
目前我們正在suspend的狀態,接下來只要resume就會開始執行。