Slide 19
Slide 19 text
void resume(Object data) {
switch(label) {
case 0:
label = 1;
data = fetchToken(this); // CPS変換後なのでContinuation=thisを渡す
if (data == COROUTINE_SUSPENDED) break; // 中断が発生した場合は抜ける
case 1:
token = (Token)data;
label = 2;
data = postItem(token, newItem, this);
if (data == COROUTINE_SUSPENDED) break;
case 2:
item = (Item)data;
updateUI(item)
label = -1; // ステートマシンの終了
break;
}
}