[英]nodejs request, loop & promise
我剛開始使用 NodeJS。 我嘗試用 NodeJS 做一個循環,然后才:將我的結果發送到一個快速模板。
我嘗試了很多 lib 和 promise,但都沒有奏效。 節點在結束循環之前執行“then”...
這是我最后一次嘗試,你能幫我嗎? 非常感謝。
[...]
//pveIds contains list of dailies id (object)
var pveIds = body.pve;
//init tab, will contain dailies title
var pveNames = [];
Promise.map(pveIds, function(pveId) {
// Promise.map awaits for returned promises as well.
request.get({
url: 'https://api.guildwars2.com/v2/achievements?id=' + pveId.id,
json: true
},
function(error, response, body) {
console.log('log 1: ' + body.name);
if (response.statusCode == 200) {
return body.name;
}
}).on('data', function(v) {
console.log('log 2: ' + v);
return v;
});
}).then(function(results) {
console.log("done");
console.log(results);
console.log("names tab:" + pveNames);
res.render('pve.ejs', {
names: pveNames
});
});
您需要return request.get({...
而不僅僅是request.get({
你現在擁有它的方式你的 function(pveId) 返回 undefined 所以你的 Promise.map 只是注冊一堆 undefined 而不是實際的承諾。
您也不應該將承諾與回調混合使用,使用 request-promise 而不是 request。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.