无法将JSON文件数据加载为mediaElement.js中某个参数的数组



我正在使用MediaElement.js库向音频时间线添加标记。我正在尝试从JSON文件中获取数据,将其转换为数组,并(未成功)将其用作参数之一。

我的JSON数据如下:

{
"StartTimeInMin": "0",
"EndTimeInMin": "60",
"event": [{
"EventTimeMin": "4",
"EventType": "1"
}, {
"EventTimeMin": "10",
"EventType": "2"
}]
}

也可以从以下位置访问:https://api.myjson.com/bins/y2v0k

我获取数据的代码:

let minuteMarkers = [];
function getJson() {
fetch("https://api.myjson.com/bins/y2v0k")
.then(function (res) {
return res.json();
})
.then(function (data) {
parsingdata = JSON.parse(data);
console.log(parsingdata);
jsondata = data.event;
jsondata.forEach(function (e) {
minuteMarkers.push(e.EventTimeMin);
return minuteMarkers;
});
})
.catch(function (err) {
console.log(err);
});
}
getJson();
console.log(minuteMarkers);
let player = new MediaElementPlayer("player2", {
features: [
"playpause",
"current",
"progress",
"duration",
"markers",
"fullscreen"
],
// markers: ["4", "14"], <- it works
markers: minuteMarkers, // <- This does not work !
markerColor: "#00FF00",
markerCallback: function (media, time) {
alert(time);
}
});

当我做console.log(minuteMarkers)时,结果得到了[]。我本来希望得到["4","10"]。

我可以想到的一个问题是:在"播放器"变量运行后,fetch会给我数据。因此,在执行"玩家"时,它没有"分钟标记",我没有得到结果。

请求您的帮助以数组形式获取数据,并将其提供给播放器->标记。

感谢

请记住,这是一个异步调用,因此您的代码应该在promise中。

例如:

function getJson() {
fetch("https://api.myjson.com/bins/y2v0k")
.then(function (res) {
return res.json();
})
.then(function (data) {
let minuteMarkers = [];
data.event.forEach(function (item) {
minuteMarkers.push(item.EventTimeMin);
});
createPlayer(minuteMarkers);
})
.catch(function (err) {
console.log(err);
});
}
function createPlayer(minuteMarkers) {
let player = new MediaElementPlayer("player2", {
features: [
"playpause",
"current",
"progress",
"duration",
"markers",
"fullscreen"
],
markers: minuteMarkers,
markerColor: "#00FF00",
markerCallback: function (media, time) {
alert(time);
}
});
}
getJson();

最新更新