ÀÖÓãµç¾º

  • ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    ¾«½²jsÒì²½

    ¸üÐÂʱ¼ä:2019Äê01ÔÂ10ÈÕ15ʱ19·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

    ¹¹½¨Ò»¸öÓ¦ÓóÌÐò×ÜÊÇ»áÃæ¶ÔÒì²½µ÷Ó㬲»ÂÛÊÇÔÚ Web ǰ¶Ë½çÃæ£¬»¹ÊÇ Node.js ·þÎñ¶Ë¶¼ÊÇÈç´Ë£¬JavaScript ÀïÃæ´¦ÀíÒì²½µ÷ÓÃÒ»Ö±ÊǷdz£¶ñÐĵÄÒ»¼þÊÂÇé¡£ÒÔǰֻÄÜͨ¹ý»Øµ÷º¯Êý£¬ºóÀ´½¥½¥ÓÖÑÝ»¯³öÀ´ºÜ¶à·½°¸£¬×îºó Promise ÒÔ¼òµ¥¡¢Ò×ÓᢼæÈÝÐÔºÃȡʤ£¬µ«ÊÇÈÔÈ»Óзdz£¶àµÄÎÊÌâ¡£Æäʵ JavaScript Ò»Ö±ÏëÔÚÓïÑÔ²ãÃæ³¹µ×½â¾öÕâ¸öÎÊÌ⣬ÔÚ ES6 ÖоÍÒѾ­Ö§³ÖÔ­ÉúµÄ Promise£¬»¹ÒýÈëÁË Generator º¯Êý£¬ÖÕÓÚÔÚ ES7 Öоö¶¨Ö§³Ö async ºÍ await¡£
    »ù±¾Óï·¨
    async/await ¾¿¾¹ÊÇÔõô½â¾öÒì²½µ÷ÓõÄд·¨ÄØ£¿¼òµ¥À´Ëµ£¬¾ÍÊǽ«Òì²½²Ù×÷ÓÃͬ²½µÄд·¨À´Ð´¡£ÏÈÀ´¿´ÏÂ×î»ù±¾µÄÓï·¨£¨ES7 ´úÂëÆ¬¶Î£©£º
    [JavaScript] ´¿Îı¾²é¿´ ¸´ÖÆ´úÂë
    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    const f = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(123);
        }, 2000);
      });
    };
     
    const testAsync = async () => {
      const t = await f();
      console.log(t);
    };
     
    testAsync();
    Ê×Ïȶ¨ÒåÁËÒ»¸öº¯Êý f£¬Õâ¸öº¯Êý·µ»ØÒ»¸ö Promise£¬²¢ÇÒ»áÑÓʱ 2 Ã룬resolve ²¢ÇÒ´«ÈëÖµ 123¡£testAsync º¯ÊýÔÚ¶¨ÒåʱʹÓÃÁ˹ؼü×Ö async£¬È»ºóº¯ÊýÌåÖÐÅäºÏʹÓÃÁË await£¬×îºóÖ´ÐÐ testAsync¡£Õû¸ö³ÌÐò»áÔÚ 2 ÃëºóÊä³ö 123£¬Ò²¾ÍÊÇ˵ testAsync Öг£Á¿ t È¡µÃÁË f ÖÐ resolve µÄÖµ£¬²¢ÇÒͨ¹ý await ×èÈûÁ˺óÃæ´úÂëµÄÖ´ÐУ¬Ö±µ½ f Õâ¸öÒì²½º¯ÊýÖ´ÐÐÍê¡£
    ¶Ô±È Promise
    ½ö½öÊÇÒ»¸ö¼òµ¥µÄµ÷Ó㬾ÍÒѾ­Äܹ»¿´³öÀ´ async/await µÄÇ¿´ó£¬Ð´Âëʱ¿ÉÒԷdz£ÓÅÑŵش¦ÀíÒì²½º¯Êý£¬³¹µ×¸æ±ð»Øµ÷¶ñÃκÍÎÞÊýµÄ then ·½·¨¡£ÎÒÃÇÔÙÀ´¿´ÏÂÓë Promise µÄ¶Ô±È£¬Í¬ÑùµÄ´úÂ룬Èç¹ûÍêȫʹÓà Promise »áÓÐʲôÎÊÌâÄØ£¿
    [JavaScript] ´¿Îı¾²é¿´ ¸´ÖÆ´úÂë
    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    const f = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(123);
        }, 2000);
      });
    };
     
    const testAsync = () => {
      f().then((t) => {
        console.log(t);
      });
    };
     
    testAsync();
    ´Ó´úÂëÆ¬¶ÎÖв»ÄÑ¿´³ö Promise ûÓнâ¾öºÃµÄÊÂÇ飬±ÈÈçÒªÓкܶàµÄ then ·½·¨£¬Õû¿é´úÂë»á³äÂú Promise µÄ·½·¨£¬¶ø²»ÊÇÒµÎñÂß¼­±¾Éí£¬¶øÇÒÿһ¸ö then ·½·¨ÄÚ²¿ÊÇÒ»¸ö¶ÀÁ¢µÄ×÷ÓÃÓò£¬ÒªÊÇÏë¹²ÏíÊý¾Ý£¬¾ÍÒª½«²¿·ÖÊý¾Ý±©Â¶ÔÚ×îÍâ²ã£¬ÔÚ then ÄÚ²¿¸³ÖµÒ»´Î¡£ËäÈ»Èç´Ë£¬Promise ¶ÔÓÚÒì²½²Ù×÷µÄ·â×°»¹ÊǷdz£²»´íµÄ£¬ËùÒÔ async/await ÊÇ»ùÓÚ Promise µÄ£¬await ºóÃæÊÇÒª½ÓÊÕÒ»¸ö Promise ʵÀý¡£

    Òì³£´¦Àí
    ͨ¹ýʹÓà async/await£¬ÎÒÃǾͿÉÒÔÅäºÏ try/catch À´²¶»ñÒì²½²Ù×÷¹ý³ÌÖеÄÎÊÌ⣬°üÀ¨ Promise ÖÐ reject µÄÊý¾Ý¡£
    [JavaScript] ´¿Îı¾²é¿´ ¸´ÖÆ´úÂë
    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    const f = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          reject(234);
        }, 2000);
      });
    };
    const testAsync = async () => {
      try {
        const t = await f();
        console.log(t);
      } catch (err) {
        console.log(err);
      }
    };
    testAsync();
    ´úÂëÆ¬¶ÎÖн« f ·½·¨ÖеĠresolve ¸ÄΪ reject£¬ÔÚ testAsync ÖУ¬Í¨¹ý catch ¿ÉÒÔ²¶»ñµ½ reject µÄÊý¾Ý£¬Êä³ö err µÄֵΪ 234¡£try/catch Ê¹ÓÃʱҲҪעÒⷶΧºÍ²ã¼¶¡£Èç¹û try ·¶Î§ÄÚ°üº¬¶à¸ö await£¬ÄÇôcatch »á·µ»ØµÚÒ»¸ö reject µÄÖµ»ò´íÎó¡£
    [JavaScript] ´¿Îı¾²é¿´ ¸´ÖÆ´úÂë
    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    const f1 = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          reject(111);
        }, 2000);
      });
    };
    const f2 = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          reject(222);
        }, 3000);
      });
    };
    const testAsync = async () => {
      try {
        const t1 = await f1();
        console.log(t1);
        const t2 = await f2();
        console.log(t2);
      } catch (err) {
        console.log(err);
      }
    };
    testAsync();
    Èç´úÂëÆ¬¶ÎËùʾ£¬testAsync º¯ÊýÌåÖÐ try ÓÐÁ½¸ö await º¯Êý£¬¶øÇÒ¶¼·Ö±ð reject£¬ÄÇô catch Öнö»á´¥·¢ f1 µÄ reject£¬Êä³öµÄ err ÖµÊÇ 111¡£
    ¿ªÊ¼Ê¹ÓÃ
    ÎÞÂÛÊÇ Web ǰ¶Ë»¹ÊÇ Node.js ·þÎñ¶Ë£¬¶¼¿ÉÒÔͨ¹ýÔ¤±àÒëµÄÊÖ¶ÎʵÏÖʹÓà ES6 ºÍ ES7 À´Ð´´úÂ룬ĿǰÆÄΪÁ÷Ðеķ½°¸ÊÇͨ¹ý [color=var(--link-color)]Babel ½«Ê¹Óà ES7¡¢ES6 дµÄ´úÂë±àÒëΪ E6 »ò ES5 µÄ´úÂëÀ´Ö´ÐС£
    Node.js ·þÎñ¶ËÅäÖÃ
    ·þÎñ¶ËʹÓà Babel£¬ºÜ¼òµ¥µÄ·½Ê½ÊÇͨ¹ý require hook¡£
    Ê×ÏȰ²×° Babel£º
    $ npm install babel-core --save
    °²×° async/await Ö§³Ö£º
    $ npm install babel-preset-stage-3 --save
    ÔÚ·þÎñ¶Ë´úÂëµÄ¸ùĿ¼ÖÐÅäÖà .babelrc Îļþ£¬ÄÚÈÝΪ£º
    {  "presets": ["stage-3"]}
    ÔÚ¶¥²ã´úÂëÎļþ£¨server.js »ò app.js µÈ£©ÖÐÒýÈë Babel Ä£¿é£º
    require("babel-core/register");
    ÔÚÕâ¾äºóÃæÒýÈëµÄÄ£¿é£¬¶¼½«»á×Ô¶¯Í¨¹ý babel ±àÒ룬µ«µ±Ç°Îļþ²»»á±» babel ±àÒë¡£ÁíÍ⣬ÐèҪעÒâ Node.js µÄ°æ±¾£¬Èç¹ûÊÇ 4.0 ÒÔÉϵİ汾ÔòĬÈÏÖ§³Ö¾ø´ó²¿·Ö ES6£¬¿ÉÒÔÖ±½ÓÆô¶¯¡£µ«ÊÇÈç¹ûÊÇ 0.12 ×óÓҵİ汾£¬¾ÍÐèҪͨ¹ý node -harmony À´Æô¶¯²ÅÄܹ»Ö§³Ö¡£ÒòΪ stage-3 ģʽ£¬Babel ²»»á±àÒë»ù±¾µÄ ES6 ´úÂ룬»·¾³¼ÈȻ֧³ÖÓֺαØÒª±àÒëΪ ES5£¿ÕâÑù×öÒ²ÊÇΪÁËÌá¸ßÐÔÄܺͱàÒëЧÂÊ¡£
    ÅäÖà Web ǰ¶Ë¹¹½¨
    ¿ÉÒÔͨ¹ýÔö¼Ó Gulp µÄÔ¤±àÒë task À´Ö§³Ö¡£
    Ê×ÏȰ²×° gulp-babel ²å¼þ£º
    $ npm install gulp-babel --save-dev
    È»ºó±àдÅäÖãº

    [JavaScript] ´¿Îı¾²é¿´ ¸´ÖÆ´úÂë
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    var gulp = require('gulp');
    var babel = require('gulp-babel');
    gulp.task('babel', function() {
      return gulp.src('src/app.js')
        .pipe(babel())
        .pipe(gulp.dest('dist'));
    });
    ³ýÁË Gulp-babel ²å¼þ£¬Ò²¿ÉÒÔʹÓùٷ½µÄ Babel-loader ½áºÏ Webpack »ò Browserify ʹÓá£
    ҪעÒâµÄÊÇ£¬ËäÈ»¹Ù·½Ò²Óд¿ä¯ÀÀÆ÷°æ±¾µÄ Babel.js£¬µ«ÊÇä¯ÀÀÆ÷ÏÞÖÆ·Ç³£¶à£¬¶øÇÒ¶Ô¿Í»§¶ËÐÔÄÜÓ°ÏìÒ²½Ï´ó£¬²»ÍƼöʹÓá£


    ×÷ÕߣºÀÖÓã²¥¿Íǰ¶ËÓëÒÆ¶¯¿ª·¢ÅàѵѧԺ

    Ê×·¢£º http://web.itcast.cn

    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿