javascript - 同步访问两个远程资源并在组合响应中输出 - NodeJS

标签 javascript node.js html express meanjs

简而言之。

我需要访问两个或多个远程资源提要,将其合并并显示为来 self 的 nodejs 服务的一个结果。


详细

我需要从多个 vendor 处获取提要(数量可能会根据存储在仪表板对象中的内容而有所不同)

连接它们,进行一些其他数据操作,最后将内容显示为一个数组。

var allFeeds = [];
dashboard.providers.forEach(function(provider) {
  if (provider.source === 'facebook') {
    ...
    fb.getFeeds(provider.data.id, function(feeds) {
      ...
      Array.prototype.push.apply(allFeeds, feeds);
    });
  } else if (provider.source === 'google') {
    ...
    google.getFeeds(provider.data.id, function(feeds) {
      ...
      Array.prototype.push.apply(allFeeds, feeds);
    });
  } else if (provider.source === 'twitter') {
    ...
    twitter.getFeeds(provider.data.id, function(feeds) {
      ...
      Array.prototype.push.apply(allFeeds, feeds);
    });
  }
});
...
// other data manipulations
...
res.json(allFeeds);

由于 nodejs 具有异步网络调用,我该如何实现这一点?

最佳答案

您可以使用 async .

var async = require('async');
var allFeeds = [];
var tasks = [];

dashboard.providers.forEach(function (provider) {
  if (provider.source === 'facebook') {
    ...
    tasks.push(function (done) {
      fb.getFeeds(provider.data.id, function (feeds) {
        ...
        Array.prototype.push.apply(allFeeds, feeds);
        done();
      });
    });
  } else if (provider.source === 'google') {
    ...
    tasks.push(function (done) {
      google.getFeeds(provider.data.id, function (feeds) {
        ...
        Array.prototype.push.apply(allFeeds, feeds);
        done();
      });
    });
  } else if (provider.source === 'twitter') {
    ...
    tasks.push(function (done) {
      twitter.getFeeds(provider.data.id, function (feeds) {
        ...
        Array.prototype.push.apply(allFeeds, feeds);
        done();
      });
    });
  }
});

async.parallel(tasks, function () {
  ...
  // other data manupulations
  ...
  res.json(allFeeds);
});

您还可以查看此 post我写信是为了构建您的代码以更好地管理异步操作

关于javascript - 同步访问两个远程资源并在组合响应中输出 - NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507727/

相关文章:

javascript - 如何判断是不是DataTable的最后一页?

javascript - IndexedDB中如何一一获取

c# - SignalR 2.0.0.0 : $. 连接未定义

multithreading - 操作系统中的轻量级线程

node.js、odbc、monetdb - varchar 属性全部为 null

javascript - 我想访问 javascript 函数内的输入字段,其 id 是使用 php 代码生成的

javascript - 是否可以清除特定部分或 div 的 javascript 或 css

javascript - 是否可以在 Coldfusion 服务器端将 HTML 标记编译为可模板化的 javascript?

javascript - 只有 Javascript 代码来显示没有 onclick 的类

node.js - 以 root 身份运行 Node.js 脚本的 Elastic beanstalk