2017-04-12 72 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

回答