我正在尝试将froogaloop javascript api转换为promisified API调用,
这是我的代码
FroogaLoopPlayer.promisify = (player) => {
//player.on = player.addEvent;
_.each(functionNames, (fn) => {
_.each(fn, (value, key) => {
player[key] = () => {
var data;
return new Bluebird(resolve => {
player.api(value, (d) => {
console.log(d);
data = d;
console.log(data);
});
resolve(data);
});
};
});
});
return player;
};
问题是,我得到的数据总是未定义的。我可能做错了什么?我已经尝试了这个,我想这是正确的方法。
return new Bluebird(resolve => {
player.api(value, resolve);
});
答案 0 :(得分:0)
请勿在调用异步函数(resolve()
is undefined
of course)之后放置data
,但在回调中:
return new Bluebird(resolve => {
player.api(value, (d) => {
resolve(d);
});
}).then(data => {
console.log(data);
return data;
});
您也可以只使用player.api(value, resolve)
。