簡體   English   中英

藍鳥沒有正確解決承諾

[英]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()放在調用異步函數之后(當然dataundefined),而是在回調中:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM