javascript - Nodejs 请求、循环和 promise

标签 javascript node.js loops request

我刚刚开始使用 NodeJS。我尝试使用 NodeJS 进行循环,然后:将结果发送到快速模板。

我尝试了很多库和 promise ,但没有一个起作用。 Node 在结束循环之前执行“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
    });
  });

最佳答案

你需要 返回 request.get({... 而不仅仅是 request.get({

现在你的函数(pveId)返回未定义,因此你的 Promise.map 只是注册了一堆未定义的而不是实际的 promise 。

您也不应该将 promise 与回调混合在一起,使用请求 promise 而不是请求。

关于javascript - Nodejs 请求、循环和 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37102490/

相关文章:

node.js - 如何在多个管道写入流中正确使用 Promise

node.js - 终端进度条未显示在 Docker 控制台中。

node.js - 在 Node JS 中从不同的 'sessions' 读取/写入相同的文件内容是否有任何风险?

r - 通过改变循环中的条件创建多个二分变量

c++ - 将指针用于条件 while/for 循环会在编译时出错

javascript - React.Js 背景图像正确显示,顶部有文字

javascript - 如何在选择另一个元素时自动打开一个元素?

java:字符串索引超出范围:6

javascript - 如何在交互式 map 上使用自定义选项填充谷歌地图自动完成搜索结果?

javascript - 如何从 gdrive 可共享链接获取视频大小/格式/访问权限