Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript babeljs.io版本的arrow函数在safari中失败_Javascript_Babeljs - Fatal编程技术网

Javascript babeljs.io版本的arrow函数在safari中失败

Javascript babeljs.io版本的arrow函数在safari中失败,javascript,babeljs,Javascript,Babeljs,以下代码的第四行(生成错误SyntaxError:Unexpected关键字'function'。Expected')以结束参数列表。由babeljs.io生成。你能纠正这个错误吗 上述代码由以下代码“箭头功能”版本生成,该版本取自 未传输async(在ES2016之前的任何环境中都不起作用)删除async和wait可消除所有这些行上的错误,但在第62行上会产生以下错误类型错误:记录器[a-1]。开始不是函数。(在“记录器[a-1].start()”中,“记录器[a-1].start”未定义)我

以下代码的第四行(生成错误
SyntaxError:Unexpected关键字'function'。Expected')以结束参数列表。
由babeljs.io生成。你能纠正这个错误吗

上述代码由以下代码“箭头功能”版本生成,该版本取自


未传输
async
(在ES2016之前的任何环境中都不起作用)删除
async
wait
可消除所有这些行上的错误,但在第62行上会产生以下错误<代码>类型错误:记录器[a-1]。开始不是函数。(在“记录器[a-1].start()”中,“记录器[a-1].start”未定义)我正在El Capitan上使用Safari 9.1.2,无法进一步更新。也许我的旅行太老了。有人在新的狩猎中尝试过这个吗?或者有没有办法重写像第62行这样的行呢?
async
没有被传输(在ES2016之前的任何环境中都不会工作)删除
async
wait
会消除所有这些行上的错误,但在第62行上会产生以下错误<代码>类型错误:记录器[a-1]。开始不是函数。(在“记录器[a-1].start()”中,“记录器[a-1].start”未定义)我正在El Capitan上使用Safari 9.1.2,无法进一步更新。也许我的旅行太老了。有人在新的狩猎中尝试过这个吗?或者有没有办法重写像第62行这样的行?
"use strict";

var recordAudio = function recordAudio() {
  return new Promise(async function (resolve) {         
    var stream = await navigator.mediaDevices.getUserMedia({
      audio: true
    });
    var mediaRecorder = new MediaRecorder(stream);
    var audioChunks = [];
    mediaRecorder.addEventListener("dataavailable", function (event) {
      audioChunks.push(event.data);
    });

    var start = function start() {
      return mediaRecorder.start();
    };

    var stop = function stop() {
      return new Promise(function (resolve) {
        mediaRecorder.addEventListener("stop", function () {
          var audioBlob = new Blob(audioChunks);
          var audioUrl = URL.createObjectURL(audioBlob);
          var audio = new Audio(audioUrl);

          var play = function play() {
            return audio.play();
          };

          resolve({
            audioBlob: audioBlob,
            audioUrl: audioUrl,
            play: play
          });
        });
        mediaRecorder.stop();
      });
    };

    resolve({
      start: start,
      stop: stop
    });
  });
};

var sleep = function sleep(time) {
  return new Promise(function (resolve) {
    return setTimeout(resolve, time);
  });
};

var handleAction = async function handleAction() {
  var recorder = await recordAudio();
  var actionButton = document.getElementById('action');
  actionButton.disabled = true;
  recorder.start();
  await sleep(3000);
  var audio = await recorder.stop();
  audio.play();
  await sleep(3000);
  actionButton.disabled = false;
};
const recordAudio = () =>
  new Promise(async resolve => {
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
    const mediaRecorder = new MediaRecorder(stream);
    const audioChunks = [];

    mediaRecorder.addEventListener("dataavailable", event => {
      audioChunks.push(event.data);
    });

    const start = () => mediaRecorder.start();

    const stop = () =>
      new Promise(resolve => {
        mediaRecorder.addEventListener("stop", () => {
          const audioBlob = new Blob(audioChunks);
          const audioUrl = URL.createObjectURL(audioBlob);
          const audio = new Audio(audioUrl);
          const play = () => audio.play();
          resolve({ audioBlob, audioUrl, play });
        });

        mediaRecorder.stop();
      });

    resolve({ start, stop });
  });

const sleep = time => new Promise(resolve => setTimeout(resolve, time));

const handleAction = async () => {
  const recorder = await recordAudio();
  const actionButton = document.getElementById('action');
  actionButton.disabled = true;
  recorder.start();
  await sleep(3000);
  const audio = await recorder.stop();
  audio.play();
  await sleep(3000);
  actionButton.disabled = false;
}