[英]Bluebird is not resolving the promise correctly
我正在嘗試將 froogaloop javascript api 轉換為承諾的 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);
});
不要把你的resolve()
放在調用異步函數之后(當然data
是undefined
的),而是在回調中:
return new Bluebird(resolve => {
player.api(value, (d) => {
resolve(d);
});
}).then(data => {
console.log(data);
return data;
});
您也可以只使用player.api(value, resolve)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.