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;
}