未明确定义的东西

时间:2013-04-28 16:02:09

标签: javascript soundcloud soundmanager2

这必须是一些我还没有掌握的JavaScript概念..

由于某些奇怪的原因, thisSound id 返回undefined!为什么??

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);

控制台:

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

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

2 个答案:

答案 0 :(得分: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属性的对象。它“returns a SMSound object instance” - 该对象是什么,请在文档中找到。

答案 1 :(得分:0)

我对soundcloud库一无所知,虽然函数createSound似乎异常......(就像I / O Stuff,javascript中的大部分I / O操作 - 以及其他语言 - 都是异步的)..当你调用console.log这个声音尚未完全创建时,是否有可能?也许你可以用很多时间模仿setInterval()行为,这段代码可以工作......(虽然我相信你应该使用回调函数)。