×î½üÒ»Ö±ÔÚÏëÒ»¸öÎÊÌ⣬ÈçºÎÄÜÈÃjs´úÂëдÆðÀ´¸üÓïÒ廯ºÍ¸ü¾ßÓпɶÁÐÔ¡£
ÉÏÖÜÄ©µÄʱºòÍ»·¢ÆæÏ룬µ±´úÂëÔÚÔËÐеÄʱºò£¬Æäʵ¸úÎÒÃÇ×öÊÂÇéÊÇÀàËÆµÄ£¬¶¼ÊÇ×öÍêÒ»²½½Ó×ÅÏÂÒ»²½£¬²¢ÇÒÕâЩÊÂÇéÓÐЩÊǿɹ滮µÄ£¬ÓÐЩÊÇÐèÒª×öÍê¸Ã²½²ÅÖªµÀÏÂÒ»²½¸Ã×öʲô¡£Ïëµ½ÕâÀïÒ»¸öjs¿ò¼Ü³ûÐÎÔÚÎÒ´óÄÔÖÐÂýÂýÐγɣ¬ÔÝÇÒÃüÃûΪflowJS¡£
½Ó×Å˵˵Õâ¸ö¿ò¼ÜÓ¦¸ÃÓÐÄÄЩAPI£¿
¿ÉÒÔÔ¤Ïȹ滮ºÃÁ÷³ÌµÄÿһ²½£¬Èçthis.setNext('²½ÖèA').setNext('²½ÖèB')¡¡
¿ÉÒÔÔÚÈκÎÒ»²½¾ö¶¨ÏÂÒ»²½×öʲô£¬Èç this.setNext('²½ÖèC')£¬ÆäʵÕâÀïµÄAPIºÍÉÏÃæµÄÒ»Ñù£¬Ö»Êǵ÷Óõĵط½²»Ò»Ñù¶øÒÑ¡£
ÔÚÈκÎÒ»²½ÖУ¬¿ÉÒÔÖªµÀµ±Ç°²½ÊÇÔÚ×öʲô£¬Ç°ÃæÒ»²½×öÁËʲô¡¢ÏÂÒ»²½×¼±¸Òª×öʲô£¬Èçthis.getCurr()¡¢this.getPrev()¡¢this.getNext()¡£
µ±Ç°²½×öÍêºó£¬Äܽ«½á¹û¸æËßÏÂÒ»²½£¨½ö½öÊÇÏÂÒ»²½ÄÜ»ñÈ¡µ½µ±Ç°²½´«µÝµÄ½á¹û£¬Ò²¾ÍÊÇΪÁ˱£»¤±äÁ¿ÎÛȾ£¬Ã¿Ò»²½¶¼Ö»ÄÜ»ñÈ¡µ½Ç°Ò»²½µÄ½á¹û£©£¬Èç
¸øÏÂÒ»²½´«Öµthis.nextData({name1:value1,name2:value2,¡¡})¡¢»ñÈ¡ÉÏÒ»²½´«À´µÄÖµthis.stepData(name1)»òthis.stepData()¡£
¿ÉÒÔÉèÖûò»ñÈ¡Õû¸öÁ÷³ÌµÄÈ«¾Ö±äÁ¿£¬ÕâÑùËùÓеIJ½Öè¶¼Äܹ²Ïí¸Ã±äÁ¿£¬Èç ÉèÖÃÈ«¾Ö±äÁ¿Öµthis.flowData({name1:value1,name2:value2,¡¡})£¬»ñȡȫ¾Ö±äÁ¿Öµthis.flowData(name1)»òthis.flowData()¡£
ÉÏÒ»²½¿ÉÒÔÖªµÀµ±Ç°²½µÄÖ´Ðнá¹û£¬³É¹¦ or ʧ°Ü£¬Èç ÔÚÉÏÒ»²½ÖÐÉèÖÃthis.setNext('²½ÖèB',
successFun, failFun)¡¢µ±Ç°²½ÖÐͨ¹ýthis.success(args)¡¢this.fail(args)À´¸æËßÉÏÒ»²½¡£
µ±Ç°²½¿ÉÒÔËæÊ±Í¨ÖªÏÂÒ»²½¿ªÊ¼Ö´ÐУ¬Èçthis.next()¡£
ÓÐЩ²½ÖèÄܲ¢ÐÐÖ´ÐУ¬²¢ÇÒÒª¶¼Ö´ÐÐÍê²ÅÄÜÖ´ÐÐÏÂÒ»²½£¬Èç this.setNext('²½ÖèA').setNext([²½ÖèB1,²½ÖèB2,²½ÖèB3]).setNext('²½ÖèC')¡£
¿ÉÒÔÔÚÈκÎʱºòÖªµÀµ±Ç°´úÂëÁ÷³ÌÔËÐйýµÄ¹ì¼££¬ÈçflowJS.trace£¬Õâ¶ÔÓÚÁ˽âÒ³ÃæµÄÖ´Ðйý³Ì»á±È½ÏÓаïÖú¡£
Talk is cheap, Show me the code!
1¡¢¿ÉÒÔÔ¤Ïȹ滮ºÃÁ÷³ÌµÄÿһ²½£¬Èçthis.setNext('²½ÖèA').setNext('²½ÖèB')¡¡


2¡¢¿ÉÒÔÔÚÈκÎÒ»²½¾ö¶¨ÏÂÒ»²½×öʲô£¬Èç this.setNext(¡®²½ÖèC¡¯) £¬ÆäʵÕâÀïµÄAPIºÍÉÏÃæµÄÒ»Ñù£¬Ö»Êǵ÷Óõĵط½²»Ò»Ñù¶øÒÑ¡£


3¡¢ÔÚÈκÎÒ»²½ÖУ¬¿ÉÒÔÖªµÀµ±Ç°²½ÊÇÔÚ×öʲô£¬Ç°ÃæÒ»²½×öÁËʲô¡¢ÏÂÒ»²½×¼±¸Òª×öʲô£¬Èç this.getCurr()
¡¢this.getPrev() ¡¢this.getNext() ¡£


4¡¢µ±Ç°²½×öÍêºó£¬Äܽ«½á¹û¸æËßÏÂÒ»²½£¨½ö½öÊÇÏÂÒ»²½ÄÜ»ñÈ¡µ½µ±Ç°²½´«µÝµÄ½á¹û£¬Ò²¾ÍÊÇΪÁ˱£»¤±äÁ¿ÎÛȾ£¬Ã¿Ò»²½¶¼Ö»ÄÜ»ñÈ¡µ½Ç°Ò»²½µÄ½á¹û£©£¬Èç
¸øÏÂÒ»²½´«Öµthis.nextData({name1:value1,name2:value2,¡¡})¡¢»ñÈ¡ÉÏÒ»²½´«À´µÄÖµthis.stepData(name1)»òthis.stepData()¡£


5¡¢¿ÉÒÔÉèÖûò»ñÈ¡Õû¸öÁ÷³ÌµÄÈ«¾Ö±äÁ¿£¬ÕâÑùËùÓеIJ½Öè¶¼Äܹ²Ïí¸Ã±äÁ¿£¬Èç ÉèÖÃÈ«¾Ö±äÁ¿Öµthis.flowData({name1:value1,name2:value2,¡¡})£¬»ñȡȫ¾Ö±äÁ¿Öµthis.flowData(name1)»òthis.flowData()¡£


6¡¢ÉÏÒ»²½¿ÉÒÔÖªµÀµ±Ç°²½µÄÖ´Ðнá¹û£¬³É¹¦ or ʧ°Ü£¬Èç ÔÚÉÏÒ»²½ÖÐÉèÖÃthis.setNext('²½ÖèB',
successFun, failFun)¡¢µ±Ç°²½ÖÐͨ¹ýthis.success(args)¡¢this.fail(args)À´¸æËßÉÏÒ»²½¡£


7¡¢µ±Ç°²½¿ÉÒÔËæÊ±Í¨ÖªÏÂÒ»²½¿ªÊ¼Ö´ÐУ¬Èçthis.next()¡£


8¡¢ÓÐЩ²½ÖèÄܲ¢ÐÐÖ´ÐУ¬²¢ÇÒÒª¶¼Ö´ÐÐÍê²ÅÄÜÖ´ÐÐÏÂÒ»²½£¬Èç this.setNext('²½ÖèA').setNext([²½ÖèB1,²½ÖèB2,²½ÖèB3]).setNext('²½ÖèC')¡£


9¡¢¿ÉÒÔÔÚÈκÎʱºòÖªµÀµ±Ç°´úÂëÁ÷³ÌÔËÐйýµÄ¹ì¼££¬ÈçflowJS.trace£¬Õâ¶ÔÓÚÁ˽âÒ³ÃæµÄÖ´Ðйý³Ì»á±È½ÏÓаïÖú¡£


ÆäʵflowJSµÄÓ÷¨²¢²»ÏÞÓÚÉÏÃædemoÁгöµÄ·½Ê½£¬±ÈÈçÄã¿ÉÒÔÊÔ×ÅÔÚijһ²½ÖÐÁ¬Ðøµ÷Óü¸´Îthis.next()£¬Äã»á·¢ÏÖÏÂÒ»²½»á±»´¥·¢¶à´Î¡£ÏëÒªÖªµÀ¸ü¶àÓ÷¨£¬¿ÉÒÔ°ÑÎÒÃÇÆ½Ê±¿´µ½µÄÁ÷³ÌͼÐÅÏ¢Ì×Óõ½ÀïÃæÈ¥ÊµÏÖ¡£
¿ÉÄÜÓÐÈË»áÓÃPromiseÀ´¸úflowJS¶Ô±È£¬ÆäʵPromise¸ü¶àµÄÊÇΪÁ˽â¾öJSÒì²½»Øµ÷µÄÎÊÌ⣬¶øflowJS²»½öÒ²Äܽâ¾öÒì²½»Øµ÷ÎÊÌ⣬»¹ÄÜÈôúÂë¿´ÆðÀ´¸ü¼ÓÓïÒ廯ºÍÁ÷³Ì»¯£¬Ê¹µÃ´úÂë¸ü¾ß¿É¶ÁÐÔ¡£
ÌØ±ðÊÇÔÚ´¦ÀíÄÇÖÖ±ÈÈçÌá½»Ò»¸öÊý¾Ýǰ£¬ÐèÒª×öÒ»Á¬´®µÄУÑéºÍ½Ó¿Úµ÷ÓõÄʱºò£¬»á¸ü¼ÓÊʺϣ¬Èç¹ûÄÄÌìÐèÒªÔÚÖм䴩²åÒ»¸öУÑé»ò½Ó¿Úµ÷Óã¬Ö»ÐèÒªÍùÁ÷³ÌÖÐÌí¼ÓÒ»²½¾Í¿ÉÒÔÁË£¬ÍêÈ«×öµ½ËÉñîºÏ¡£
flowJS²»½öÄÜÓÃÓÚÒ³ÃæJS¿ª·¢£¬Í¬ÑùÔÚnodeJSºáÐеÄʱ´ú£¬±ØÐëÒ²ÊÇÖ§³ÖÔÚ·þÎñ¶ËµÄnodeJSÀ´Ê¹Óõģ¬ÎÞÈκεÚÈý·½ÒÀÀµ£¡
ºÃÁË£¬°²ÀûÁËÄÇô¶à£¬ÏÖÔÚÀ´¿´¿´Õâ¸öÖ»ÓÐ99ÐдúÂëµÄ¿ò¼ÜµÄÕæÃæÄ¿ ¡ý
ÎÒÕæµÄûÓÐѹËõ´úÂ룬ËüÕæµÄÖ»ÓÐ99ÐУ¡


|