0

this must be some JavaScript concept that I am not grasping yet..

For some odd reason the id of thisSound returns undefined! why??

console.log("o: "+o.id+" - "+decodeURI(soundURL));
// create sound
thisSound = soundManager.createSound({
    id:o.id,
    url:decodeURI(soundURL)
});

console.log("thisSound: "+thisSound.id+" - "+thisSound.url);

the console :

o: Sound0 - http://api.soundcloud.com/tracks/76673175/stream?client_id=e992d357c0914e9b65ba17f459720fc0

thisSound: undefined - http://api.soundcloud.com/tracks/76673175/stream?client_id=e992d357c0914e9c65ba17f459720fc0   
4

2 回答 2

1

您提供的代码没有“明显”定义id返回对象的。

// create sound
thisSound = soundManager.createSound({
    id:o.id,
    url:decodeURI(soundURL)
});

假设我createSound为您编写函数:

var soundManager = {
  createSound: function (options) {
    // do internal magic here
    createSound(options);
    // return public API here
    return {
      getId: function () {}
    }
  }
};

所以,我的观点是,如果有第三方函数,你应该遵循创建该函数的人的文档,并且 SoundManager 显然不会返回一个id定义了属性的对象。它“<a href="http://www.schillmania.com/projects/soundmanager2/doc/" rel="nofollow">返回一个 SMSound 对象实例”——该对象是什么,请在文档中查找。

于 2013-04-29T09:16:49.683 回答
0

我对 soundcloud 库一无所知,尽管该函数createSound似乎是异步的......(就像 I/O 的东西,javascript 和其他语言中的大部分 I/O 操作都是异步的)......当你已调用console.logthisSound 尚未完全创建?也许您可以花setInterval()很多时间模拟一个行为,并且这段代码可以工作……(尽管我相信您应该为此使用回调函数)。

于 2013-04-29T00:46:01.897 回答