我需要閱讀的API,只給每個查詢100個結果,並從那裏獲得下一個100如何在Node.js中對promise做遞歸請求?
我已經成功地做多個請求先後與下面的代碼時間戳的數據,但對於一些它永遠不會回到最初的承諾。它陷入了「沒有更多的訂單來獲取」。
app.get('/test', (req, res) => {
const getOrders = (from) => {
return request(mcfApiUrl + "changes?created_after_ts="+from+"&key="+mcfKey)
.then(xml => convert.xmlDataToJSON(xml,{explicitArray:false,mergeAttrs:true}))
.then(orders => checkForMore(orders));
}
const checkForMore = (orders) => {
return new Promise((resolve, reject) => {
if (orders['Orders']['orders'] == 100){
getOrders(orders['Orders']['time_to']);
console.log("Fetched "+ orders['Orders']['orders']+" orders");
console.log("More orders available from: "+moment(orders['Orders']['time_to']*1000).format());
}
else {
console.log("Fetched "+ orders['Orders']['orders']+" orders");
console.log("No more orders to fetch");
resolve(orders);
}
});
};
var fromdate = 1483999200;
getOrders(fromdate)
.then(output => res.send("Done")) // It never gets here
.catch(err => console.log(err));
});
我錯過了什麼?
尋找Ajax請求的無限循環? – Hitmands
我建議使用事件發射器或觀察器代替 – MinusFour
@Hitmands:if語句應該使它成爲非無限的。 – Jopi