2016-06-28 70 views
0

這個問題可能有點含糊,但我會盡我所能解釋。如何順序處理來自API的異步結果?

我正在嘗試創建一個可以從Twitter的API中檢索到的所有推文的數組,但它將每個請求限制爲200個返回的推文。我如何才能以異步方式向Twitter發送請求,最高限額爲3200個回覆推文?我的意思是說,是否可以異步調用Twitter的API,但依次構建陣列,確保推文正確地按照日期排序?

所以,我有一個數組:

var results = []; 

和我使用節點的請求模塊:

var request = require('request'); 

我現在所擁有的(爲200只限)什麼是

request(options, function(err, response, body) { 
    body = JSON.parse(body); 
    for (var i = 0; i < body.length; i++) { 
     results.push(body[i].text); 
    } 
    return res.json(results); 
}); 

我已經看過可能使用'承諾'模塊,但它理解混亂。我嘗試使用while循環,但它變得複雜,因爲我無法遵循服務器正在使用的路徑。

讓我知道這是不是很好的解釋。

最後,我希望結果是一個數組,填充所有請求發送的推文。

回答

1

我建議使用request-promise而不是request。這是我的解決方案。

var rp = require('request-promise'); 
var tweets = []; 
var promises = []; 
for (var i =1; i< 10; i++){ 
    var promise = rp(options); 
    promises.push(promise); 
} 
Promise.all(promises).then(function(data){ 
    data.forEach(function(item){ 
    // handle tweets here 
    }); 
    return res.json(tweets); 
}); 
+0

我需要在處理所有數據之前訪問請求中的一些數據......我該怎麼做呢?有點像「偷看」到承諾的內容? –

相關問題