javascript - 如何在 Node.js Express 的 async.each 中使用 request

标签 javascript node.js asynchronous

在我的 node.js 项目中,我需要发出迭代 API 请求,因此我使用 async.each 方法。

控制台提示 url 未定义,我理解这一点,因为我只声明了 urls,它是一个 url 数组。

我只是不确定如何将请求模块中的 request() 放在 async.each 中。为了满足 async.each() 我将 urls 作为第一个参数,但 request() 本身需要一个查询字符串参数,即 url。

我还使用 Underscore 中的 _.extend 来合并两个响应,但我不确定当前的位置是否正确。

有人可以给我指出正确的方向吗?

var urls = [];

Object.keys(result.items).forEach(function(item) {
  urls.push("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=" + result.items[item].contentDetails
    .videoId + "&key=xxx");

})

async.each(
  urls,
  request(url, function(err, response, body) {
    if (err) {
      console.log(err);
      return;
    }
    body = JSON.parse(body);
  }),
  function() {
    var extended = _.extend(result, body);
    getVideoDetailsCallback(null, extended)
  });

最佳答案

看来您正在使用回调和所有内容调用request,而不仅仅是引用它,这意味着您可能需要匿名函数调用。

此外,如果您想要在末尾有一个数组,或者您要扩展的任何内容,您可以只使用 async.map 代替,并执行类似的操作

var urls = Object.keys(result.items).map(function(item) {
    return "https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=" + result.items[item].contentDetails.videoId + "&key=xxx";
});

async.map(urls, function(url, callback) {
    request(url, function(err, response, body) {
        if (err) {
            return callback(err);
        }
        callback(null, JSON.parse(body));
    });
}, function(err, extended) {
    if (err) {
        // handle error
    }
    // extended is an array containing the parsed JSON
    getVideoDetailsCallback(null, extended); 
});

关于javascript - 如何在 Node.js Express 的 async.each 中使用 request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407662/

相关文章:

javascript - 有没有办法使用 jQuery 或 Javascript 强制在 Firefox 中打开页面?

javascript - 根据值从链表中删除节点

node.js - AWS serverless-image-handler v3.x 因 AWS Lambda 执行环境的更改而中断

node.js - Mongoose 复杂(异步)虚拟

c# - 如何在不阻止 Xamarin Android 中用户输入的情况下更新 UI?

javascript - jQuery 淡入淡出效果未按预期工作

javascript - 加号在 Google Apps Script + MySQL 中转换为空格

javascript - 离开命令 Discord JS

node.js - 当我使用导出但使用 module.exports 时出错

javascript - 作用域和异步 JavaScript