2016-03-04 44 views
1

我使用node-strava-v3和Node 5.7從Strava的API中檢索JSON集合。其實很簡單,實際上沒有問題。 我只想借此機會嘗試ES6發電機。到目前爲止,我認爲我很瞭解這個概念。但是在這個Node-Strava-V3 API封裝的情況下,這些方法永遠不會直接返回值或承諾。只允許回叫。 這引出了一個問題:我怎樣才能將ES6發電機的概念融入其中?Strava-V3和Javascript es6發生器=不兼容?

藉此:(這需要你的access_token可以在Strava門戶請求)

var strava = require('strava-v3'); 
var mainActivity = {id: 504641206}; 
strava.activities.get(mainActivity, function (err, data){ 
    if(err){ console.log("Strava GET issue: ", err); 
    /// consume the JSON data here... 
}; 
//rest of the code 

,但我可以用發電機暫停,直到這個「strava.activities.get()」方法結束?這個方法不會返回任何,沒有價值,也沒有承諾。

感謝您的建議

FJ

回答

3

這不是一個用例的發電機。對於沒有生成ES2016但可能在ES2017中的async/await stuff這將是一個使用情況。

切向有關:任何 API,它提供的回調可以承諾,指明分數:

var strava = require('strava-v3'); 
var mainActivity = {id: 504641206}; 
var p = new Promise((resolve, reject) => { 
    strava.activities.get(mainActivity, (err, data) => { 
     if (err) { 
      reject(err); 
     } else { 
      resolve(data); 
     } 
    }); 
}); 
p.then(
    result => { 
     //rest of the code 
    }, 
    error => { 
     // handle error 
    } 
); 

而且事實上有多個庫,在那裏,跟隨回調節點約定的諾言,ifiy任何功能獲取第一個參數的錯誤和第二個參數的數據,如node-promisify

+0

感謝T.J.,這使得事情整潔乾淨。我也會檢查圖書館和下一個ES版本。看起來有希望:) – AngryTux