代码如下:
var holder;
var findSong;
var embedHolder;
$(".hypemList ol").on('click','li',function (){
holder = $(this).text();
findSong = SC.get('/tracks', { q: holder });
embedHolder = findSong._result[0].uri;
SC.oEmbed(embedHolder // song to embed
, { color: "ff0066"
, auto_play: false
, maxwidth: 500
, maxheight: 1000
, show_comments: true // options
, element: document.getElementById("soundTest") // what element to attach player to
});
});
我希望发生什么:
我有一个我想播放的歌曲列表。当我点击歌曲时,我将抓取该字符串,然后使用该字符串搜索 soundcloud API
。我将获取结果的索引 0 并将其放入 SC.oEmbed
中来播放歌曲。
当我打开开发控制台时,单击歌曲时出现此错误 -
Uncaught TypeError: Cannot read property '_result' of undefined.
我相信我需要等待 findSong
完成,然后我可以使用 embedHolder
并将其放入 SC.oEmbed
中。
我做了什么:
我发现了这个:returning array from function in javascript 。我尝试按照他们的做法进行操作,但似乎没有效果。
如果有人能够为我指明下一步该做什么的正确方向,我将不胜感激。
最佳答案
SC.get() 有 3 个参数:路径、选项和回调。回调是一个在 SC.get
完成后调用的函数。本例中的回调将结果数组作为参数。在代码中使用回调将如下所示:
SC.get('/tracks', { q: holder }, function(tracks){
embedHolder = tracks[0].uri;
SC.oEmbed(embedHolder // song to embed
, { color: "ff0066"
, auto_play: false
, maxwidth: 500
, maxheight: 1000
, show_comments: true // options
, element: document.getElementById("soundTest") // what element to attach player to
});
});
希望对你有帮助!
关于Javascript - 使用 soundcloud API 进行异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597055/