Page 323 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 323

"интегрировали" значение в этот модуль. Давайте посмотрим, как мы могли бы реа­
       лизовать собственный модуль debug.
                e
       let  lastM s sage ;
       module . exports  =  function ( p refix )
           return  function (message )  {
               const  now  =  Date . n o ( ) ;
                                 w
               const  s i nceLastMessage   now  - ( l astMessage  1  1    now) ;
               console . l o ( ' $ { p refix }  $ { message }  +$ { s inceLastMessage } m s ' ) ;
                         g
                 s
               la t Message  =  now;

          Этот модуль экспортирует функцию, которая написана так, чтобы значение пере­
       менной prefix можно было использовать в модуле. Обратите внимание, что у нас
       есть и другое значение, lastMessage, которое является временной меткой последне­
       го сообщения, которое было выведено; мы используем его,  чтобы вычислить время
       между сообщениями.
          Этот фрагмент кода демонстрирует важный момент: что произойдет, если вы им­
       портируете модуль многократно? Рассмотрим, например, что происходит при импорте
       самодельного модуля debug дважды.
       const  debugl   require ( '   . / debug ' )   ( ' Перв ый  ' )  ;
       const  debug2   require ( '  . / debug ' )  ( ' В торой ' ) ;

       debugl (  з апущен  первый  отладчик ! ' )
              '
       dеЬug2 ( ' запущен  второй  отладчик !  ' )
       setTimeout ( f unction ( )    {
           debugl ( ' пpoшлo  немного  времени  . .  . ' ) ;

           debug2 ( ' чтo  случилось ? ' )  ;
        }  ,  2 0 0 ) ;
          Если вы ожидаете увидеть нечто такое:
       Первый  запущен  первый  отладчик !  + O ms
       Второй  запущен  второй  отладчик !  + O ms
       Первый  прошло  немного  времени .  .  .    +200ms
       Второй  что  случилось ?  +20 0 ms

       то я вас разочарую. На самом деле вы увидите это (плюс или минус несколько мил­
       лисекунд).

       Первый  запущен  первый  отладчик !  + O ms
       Второй  запущен  второй  отладчик !  + O ms
       Первый  прошло  немного  времени .  .  .    +200ms
       Второй  что  случилось ?  +Oms



       326      Глава 20. Платформа Node
   318   319   320   321   322   323   324   325   326   327   328