如何在 Node.js 中通过 API 回调异步递归?

2024-03-10

API 调用返回下一个“页面”结果。如何优雅地递归该结果回调?

这是我需要执行此操作的示例:

var url = 'https://graph.facebook.com/me/?fields=posts&since=' + moment(postFromDate).format('YYYY-MM-DD') + '&access_token=' + User.accessToken;
request.get({
    url: url,
    json: true
}, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        _.each(body.posts.data, function (post) {
            User.posts.push(post); //push some result
        });
        if (body.pagination.next) { // if set, this is the next URL to query
            //?????????
        }
    } else {
        console.log(error);
        throw error;
    }

});

我建议将调用包装在一个函数中,并继续调用它直到有必要为止。

我还会添加一个回调来了解该过程何时完成。

function getFacebookData(url, callback) {

    request.get({
        url: url,
        json: true
    }, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            _.each(body.posts.data, function (post) {
                User.posts.push(post); //push some result
            });
            if (body.pagination.next) { // if set, this is the next URL to query
                getFacebookData(body.pagination.next, callback);
            } else {
                callback(); //Call when we are finished
            }
        } else {
            console.log(error);
            throw error;
        }

    });
}

var url = 'https://graph.facebook.com/me/?fields=posts&since=' + 
    moment(postFromDate).format('YYYY-MM-DD') + '&access_token=' + User.accessToken;

getFacebookData(url, function () {
    console.log('We are done');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js 中通过 API 回调异步递归? 的相关文章

随机推荐

  • xcode 5 中的 Shell 脚本调用错误

    我在我的项目中使用 openssl 和 sqlcipher 我必须从 Xcode 4 6 升级到 Xcode 5 但是我在 Xcode 5 中编译项目 它给我错误 cp libCrypto a 没有这样的文件或目录 Cp libssl a
  • 用于匹配捕获组中前面或后面的字母字符的正则表达式

    举例来说 我有以下数据 ab cd ef zy ba cd 我希望能够以匹配第一个字符的方式来匹配它 然后根据第一个字符的捕获组匹配第二个字符 上面示例中的每一行都应该匹配 而类似cc or af不应该 详细来说 我的想法看起来像这样 基于
  • HTML img src 返回 404 未找到错误,尽管一切正常

    这是一件令人困惑的事情 首先看我的文件夹的层次结构等 https i stack imgur com b5U8a png并看到图像文件夹下有我的图像 cribbage png 我正在尝试使用 index html 中的以下代码访问此图像 h
  • 在 PostgreSQL 中连接

    我有一个带有宽度和高度 均为整数 的表格 我想按原样显示它 例如 宽度 300 高度 160 面积 300 x 160 我正在使用以下查询 select cast concat width x height as varchar 20 fr
  • 云形成的秘密

    我想坚持 所有基础设施都是代码 的政策 但是 我看不到使用 CloudFormation 来实现机密的方法 SecretsManager 要求您以纯文本形式指定 SecretString 即使您从某处注入解密的值 纯文本字符串也会显示在 C
  • NSIS - 检查注册表项值是否存在

    我需要检查注册表值是否存在 我怎样才能做到这一点 我的第一个方法 ReadRegStr 0 HKLM SOFTWARE Microsoft Windows NT CurrentVersion Ports NUL IF 0 MESSAGEBO
  • Pandas:“item”已被弃用

    到目前为止 我在这里使用了这行代码 max total gross event data max total gross loc event data event id event id item 自从我更新了 Pandas 后 我收到了未
  • MSBuild / Visual Studio 分布式构建

    我开发 维护一个需要很长时间才能构建的应用程序 例如 完整的构建需要超过六个小时 在花了一天的大部分时间构建我们的应用程序之后 我开始研究改进构建时间的方法 建议关于这个堆栈溢出问题 https stackoverflow com ques
  • JavaFX:在拖放过程中更改光标

    我试图在拖放过程中更改节点上的光标 但图像没有改变 我正在打电话setCursor in the DragDetectedEventHandler我的节点 我也尝试过打电话getParent setCursor 并得到相同的结果 我还尝试在
  • 未定义行为 (UB) 以实现余地为条件的程序是具有无条件 UB 的程序吗?

    在回答中 在 C 20 中使用 std bit cast 创建闭包 lambda 对象是否有效 https stackoverflow com questions 68828838 is it valid to create closure
  • Silverstripe 后端发生奇怪的行为?

    突然间 每当我尝试单击 silverstripe 后端中的页面时 它最初会显示如下 我正在运行 SS 3 2 当这种情况开始发生时 我升级到 3 2 1 看看是否可以解决问题 但不行 有时它也会显示此错误消息 User Warning Co
  • RecyclerView重叠无阴影

    我想开发像这张图这样的List 我曾经使用 RecyclerView ItemDecoration 进行重叠 但它是重叠的 没有阴影 屏幕和装饰器代码如下 public class OverlapDecoration extends Rec
  • 如何在html5视频上移动svg元素并同时控制视频播放?

  • 双花括号 ({{) 在 YAML 文件(Ansible 使用的)中意味着什么?

    我对 Ansible 相当陌生 并试图理解 YAML 文件 因为我不清楚这条线 file dest docroot 有人可以解释一下那些大括号 是做什么的吗 name Create Web Root when nginxinstalled
  • c++如何写构造函数?

    我不习惯 C 并且在编写构造函数时遇到问题 请参阅此示例 是我正在处理的代码的简短版本 class B public B int x class A public B b A here I have to initialize b 这会引发
  • 获取 SvelteKit 端点请求的原始正文

    我的 SvelteKit 应用程序中有一个端点 用于处理来自 Stripe 的 Webhook 请求 每个请求都经过签名 以便可以验证它是否来自 Stripe 我必须验证该事件是否来自 Stripe 的代码如下所示 import Strip
  • 如何在java web应用程序中将byte[]作为pdf发送到浏览器?

    在操作方法 JSF 中 我有如下内容 public String getFile byte pdfData how to return byte as file to web browser user 如何将 byte 作为 pdf 发送到
  • Mysql Like 包含通配符会给出意想不到的结果

    我在一个非常简单的 MySQL 数据库表中有一个 varchar 列 其中包含 2 种不同类型的产品引用 一个喜欢 14521 451 288 其他喜欢45742154 为了能够管理它们 我使用以下代码 WHERE ref LIKE 但所有
  • 想要持续观察并偶尔检查 gdb 中当前帧之外的变量

    假设我定义了一个名为var在主函数中 我为其设置了一个观察点 然后我输入另一个函数func 此时 观察点可能会被删除 这样我就无法访问该变量了 有什么方法可以让您随时随地保持观察点吗 另外 我知道我可以使用类似的语法print main v
  • 如何在 Node.js 中通过 API 回调异步递归?

    API 调用返回下一个 页面 结果 如何优雅地递归该结果回调 这是我需要执行此操作的示例 var url https graph facebook com me fields posts since moment postFromDate