Babel 根本不会改变 Promise

Babel Does not Change Promises at All

我完全不明白 Babel 是如何工作的。我玩过它,它转译了一些东西而不是其他东西。这方面的一个例子是承诺。我将列出我的项目的配置和结果:

我的目标是 IE 10 (.browserslistrc):

>= 1%
last 1 major version
not dead
Chrome >= 45
Firefox >= 38
Edge >= 12
Explorer >= 10
iOS >= 9
Safari >= 9
Android >= 4.4
Opera >= 30

babel.config.js

const presets = [
  [
    '@babel/preset-env',
    {
      useBuiltIns: 'entry',
      debug: true,
      corejs: { version: '3.2.1' }
    }
  ]
];

module.exports = { presets };

一个名为 promises.js

的文件
var promise1 = new Promise(function (resolve, reject) {
  setTimeout(function () {
    resolve('foo');
  }, 300);
});

promise1
  .then(function (value) {
    console.log(value);    
  });

我只是使用 "babel src -d lib"

调用 cli

如我所说,promises 文件按原样复制,尽管 IE10 不支持它们。我已将 core-js 作为依赖包含在解决方案中,但根本没有手动调用它(我不确定 Babel 是否使用它)。

如果有人能帮助我理解这一点,那就太好了。

谢谢

多一点时间(读作,很多时间)Babel.js,我已经找到了我的问题的答案。

我不理解 Babel 转译某些东西而填充其他东西的事实。通过 polyfill,我的意思是它将 polyfilling 的工作委托给 core.js.

这花了很长时间才降下来,因为 Babel 被吹捧为 Javascript 编译器。从技术上讲是。但它也是委托人:)

为了canvas一些东西,这些是转译的:

  • 箭头函数
  • 解构运算符

虽然这些是填充的:

  • 获取
  • 承诺

我的问题是关于承诺的。这就是答案。 希望这能帮助其他新接触 Babel 的人。