Object doesn't support property or method 'allSettled'

打包上线报错 : Unhandled promise rejection TypeError: Object doesn't support property or method 'allSettled'

chrome等可以正常解析,Edge浏览器报这个异常,是什么情况,, 项目中应用到Promise.allSettled ,有没有对应babel插件

阅读 5.2k
4 个回答
// 差试过babel始终解决不掉,最终还是只能使用以下的办法
const formatSettledResult = (success, value) => success ? { status: 'fulfilled', value } : {
  status: 'rejected',
  reason: value
};
Promise.allSettled = function(iterators) {
  const promises = Array.from(iterators);
  const num = promises.length;
  const settledList = new Array(num);
  let settledNum = 0;
  return new Promise(resolve => {
    promises.forEach((promise, index) => {
      Promise.resolve(promise).then(value => {
        settledList[index] = formatSettledResult(true, value);
        if (++settledNum === num) {
          resolve(settledList);
        }
      }).catch(error => {
        settledList[index] = formatSettledResult(false, error);
        if (++settledNum === num) {
          resolve(settledList);
        }
      });
    });
  });
};

Edge浏览器不支持

配置下babel

npm install core-js@3 --save
{
    "presets": [
        "@babel/preset-env",
        {
            "useBuiltIns": "usage",
            "corejs": { version: 3, proposals: true }
        }
    ]
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题