2017-04-12 93 views
2

我的代碼是下面的:使用異步/等待而不巴貝爾-填充工具

@action async login(payload){ 
    try { 
     this.loginLoading = true 
     const data = await request('/admin/login', { 
     method: 'post', 
     data: payload 
     }) 
     this.logined = true 
     localStorage.setItem('token', data.token) 
     this.loginLoading = false 
    } catch (error) { 
     console.log(error) 
     message.error('login failed') 
     this.logined = false 
     this.loginLoading = false 
    } 

巴貝爾-填充工具將變換上面的代碼:

 return _regenerator2.default.wrap(function _callee$(_context) { 
      while (1) { 
      switch (_context.prev = _context.next) { 
       case 0: 
       _context.prev = 0; 

       this.loginLoading = true; 
       _context.next = 4; 
       return (0, _request2.default)('/admin/login', { 
        method: 'post', 
        data: payload 
       }); 

       case 4: 
       data = _context.sent; 

       this.logined = true; 
       localStorage.setItem('token', data.token); 
       this.loginLoading = false; 
       _context.next = 16; 
       break; 

       case 10: 
       _context.prev = 10; 
       _context.t0 = _context['catch'](0); 

       console.log(_context.t0); 
       _message2.default.error('login failed'); 
       this.logined = false; 
       this.loginLoading = false; 

       case 16: 
       case 'end': 
       return _context.stop(); 
      } 
      } 

變換代碼將重命名變量難以閱讀和在使用源圖的chrome devl-tool中調試,實際上最新的chrome是支持async/await語法的,所以我不想在開發中使用babel-polyfill。

但是,如果刪除巴別塔,填充工具,將拋出regeneratorRuntime is not defined.

+2

babel-polyfill不會轉換您的文件,它是webpack配置中的babel-loader。你嘗試刪除它嗎? – Pavlo

回答