我正在使用SoundCloud API,我创建了一个回调函数,首先获取一个歌曲URL,然后通过SoundCloud API获取与该URL相关的声音ID然后将该ID传递给回调以使用它进行流式传输并更新页面。它确实收集了来自API的数据,但是varibale在本地更新并在公共场合保持UNDEFINED。
以下是代码和DEMO:http://jsfiddle.net/aq309twd/
function transfer(item, callback) {
permalink_url = myURL;
SC.get('http://api.soundcloud.com/resolve.json?url=' + permalink_url + '/tracks&client_id=' + client_id, function (result) {
trackID = result.id;
});
callback(trackID);
}
transfer("", function (num) {
//$(".item").text(num);
SC.get("/tracks/" + num, function (sound) {
SC.stream("/tracks/" + num, function (sound) {
//somefountion
});
});
});
在SC.get
trackID
更新,但此函数之外的任何地方都未定义。
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
您的函数SC.get
看起来正在执行异步操作,可能是Ajax调用,因此在下一行callback(trackID);
执行的操作不会在ajax调用响应的同时执行。
将回调函数移动到SC.get
中会更有意义:
SC.get('http://api.soundcloud.com/resolve.json?url=' + permalink_url + '/tracks&client_id=' + client_id, function (result) {
var trackID = result.id;
callback(trackID);
});