代码之家  ›  专栏  ›  技术社区  ›  Fez Vrasta

使用babel预设环境禁用promise透明?

  •  0
  • Fez Vrasta  · 技术社区  · 6 年前

    babel-preset-env (巴别塔6)我找不到如何禁用“承诺”透明。

    我试着用:

    {
      "presets": [
        [
          "env",
          {
            "exclude": ["transform-async-to-generator", "es6.promise"]
          }
        ]
      ],
      "plugins": [
        "transform-object-rest-spread",
        "transform-class-properties",
        [
          "fast-async",
          {
            "spec": true,
            "compiler": { "promises": true, "generators": false }
          }
        ]
      ]
    }
    

    runtimeGenerator 功能。

    2 回复  |  直到 6 年前
        1
  •  4
  •   AKX Bryan Oakley    6 年前

    好吧,现在说的是真实的。八卦记和提到 fast-async 等等。。。像这样的巴别塔似乎足够用了 快速异步 而不是 regenerator-runtime 等。

    {
      "presets": [
        [
          "env",
          {
            "exclude": ["babel-plugin-transform-async-to-generator", "babel-plugin-transform-regenerator"]
          }
        ]
      ],
      "plugins": [
        [
          "fast-async",
          {
            "spec": true,
            "compiler": { "promises": true, "generators": false }
          }
        ]
      ]
    }
    
        2
  •  1
  •   AKX Bryan Oakley    6 年前

    承诺不应该传递给任何使用 babel-preset-env async await 是的,不过。你可以看到 here in the Babel playground 那个

    const x = () => new Promise((res) => res('hi'));
    
    const y = async () => {
      const z = await x();
    };
    

    'use strict';
    
    function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
    
    var x = function x() {
      return new Promise(function (res) {
        return res('hi');
      });
    };
    
    var y = function () {
      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var z;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return x();
    
              case 2:
                z = _context.sent;
    
              case 3:
              case 'end':
                return _context.stop();
            }
          }
        }, _callee, undefined);
      }));
    
      return function y() {
        return _ref.apply(this, arguments);
      };
    }();
    

    使用默认环境设置。如果你把env字符串改成, chrome>60 (或者,事实上,有趣的是 >4%