这必须是一些我还没有掌握的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
答案 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()
行为,这段代码可以工作......(虽然我相信你应该使用回调函数)。