Coroutine map

ÀÌÀü¿¡ Coroutine in Js ¿¡¼­ ±¸ÇöÇÑ ÄÚ·çƾÀº ¹è¿­·Î ±¸Çö Ç߱⠶§¹®¿¡ °°Àº ÄÚ·çƾÀÌ Ãß°¡ µÇ´Â °ÍÀ» ¸·À»¼ö°¡ ¾ø¾ú´Ù.

¹è¿­¿¡¼­ map ¹æ½ÄÀ¸·Î ¼öÁ¤ÇÏ¿© °°Àº ÄÚ·çƾÀÌ ´Ù½Ã Ãß°¡ ¾ÈµÇµµ·Ï ¼öÁ¤ ÇÏ¿´´Ù.
Ãß°¡µÈ coroutine ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù.

1. Å°°ª¿¡ ÀÇÇØ ÄÚ·çƾÀ» Ãß°¡ÇÑ´Ù.

coroutine.add ÇÔ¼öµµ ¿©ÀüÈ÷ Á¸Àç ÇÑ´Ù.
°°Àº Å° °ªÀÌ ÀÌ¹Ì Á¸ÀçÇÏ¸é °ªÀ» Ãß°¡ ÇÏÁö ¾Ê´Â´Ù.

coroutine.set = function(key, c)

key : Ãß°¡ ÇÒ Å°°ª
c: ÄÚ·çƾ¿¡ Ãß°¡ ÇÒ ÇÔ¼ö

2. Å°°ªÀÇ ÄÚ·çƾÀÌ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÑ´Ù.

coroutine.has = function(key)

¿¹Á¦)
Ãß°¡ µÈ ÇÔ¼ö¿¡ ´ëÇÑ ¿¹Á¦ ÆÄÀÏÀÌ´Ù.

    coroutine.set('main', function*(dt) {
        updateLuminance();
        dt = yield undefined;
        dt = yield* waitCount();
        dt = yield* waitFunc(fadeOut);
        dt = yield* waitFunc(fadeIn);
        dt = yield* coroutine.waitForSeconds(0.5);
       
        message('¾È³çÇϼ¼¿ä. °ÔÀÓÀ» ½ÃÀÛ ÇÒ·Á¸é');
        message('"Enter"Å°¸¦ ´­·¯ ÁÖ¼¼¿ä!!!');
        dt = yield* waitInput();
        dt = yield* waitFunc(fadeOut);
        dt = yield* waitFunc(fadeIn);
        message('´ç½ÅÀº ¸¶¹ý»ç·Î Á¶¼±ÀÇ ´Ü±ºÀ» ±¸ÇØ¾ß ÇÕ´Ï´Ù.'); 
        dt = yield* waitInput();
    });
   
    //mainÅ°·Î ÀÌ¹Ì Ãß°¡ µÇ¾ú±â ¶§¹®¿¡ ´Ù½Ã Ãß°¡ ¾ÈµÈ´Ù.
    coroutine.set('main', function*(dt) {
        console.log('add the second main');
    });   
   
    //mainÅ°°¡ ½ÇÇà ÁßÀ̹ǷΠhas´Â true¸¦ ¹ÝȯÇÑ´Ù.
    if(coroutine.has('main')) {
        console.log('already added main');
    }

´Ù¿î·Îµå:
coroutine_test.html
main.js
coroutine.js
coroutine_map.zip