【问题标题】:How to update and pass a variable in a call back function如何在回调函数中更新和传递变量
【发布时间】:2014-09-17 03:10:04
【问题描述】:

我正在使用 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 得到更新,但在此函数之外的任何地方都未定义。 有什么想法吗?

提前致谢。

【问题讨论】:

    标签: javascript jquery callback scope soundcloud


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2010-12-22
      • 2018-07-29
      • 2019-10-08
      • 1970-01-01
      • 2013-10-08
      相关资源
      最近更新 更多