如何在回调函数中更新和传递变量

How to update and pass a variable in a call back function

本文关键字:变量 更新 回调 函数      更新时间:2023-09-26

我使用的是SoundCloud API,我做了一个带有回调的函数,首先它会获得歌曲URL,然后通过SoundCloud API获得与该URL相关的声音ID,然后将该ID传递给回调,以用于流式传输和更新页面。它确实从API收集数据,但变量会在本地更新,并在公共场合保持未定义。

以下是代码和演示: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.gettrackID得到更新,但在此函数之外的任何地方都是未定义的。知道吗?

提前谢谢。

您的函数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);
});