完成两个ajax请求后执行回调的最简单方法

赛义夫·贝坎(Saif Bechan)

我有一个充当API的Node.js应用程序。我收到一个请求,该请求基于我对另一个服务器执行一些ajax请求,缓存结果并将结果发送回客户端的操作。

现在,对于这个新请求,我需要执行两个单独的ajax调用,并在两个请求都完成时给客户端一个响应。为了加快速度,如果可能的话,我不想嵌套它们。

而且,这些ajax请求是棘手的,有时服务器会将我们的ajax请求计时,或者返回不好的结果,在这种情况下,我递归地执行相同的ajax请求。

本杰明·格伦鲍姆(Benjamin Gruenbaum)

好吧,诺言使这变得微不足道:

 var http = Promise.promisifyAll(require("http"));
 Promise.all(["url1","url2"]).map(getWithRetry).spread(function(res1,res2){
      // both responses available
 }).catch(function(err){
      // error handling code
 });

getWithRetrywith promises的示例可以是:

function getWithRetry(url){
      return http.getAsync(url).catch(function(err){ 
           return http.getAsync(url); // in real code, check the error.
      });
}

但是,您没有使用它们,因此必须手动进行同步。

 var res1,res2,done = 0;;
 requestWithRetry("url1",function(err,result){
       if(err) handleBoth(err,null,null);
       res1 = result;
       done++;
       if(done === 2) handleBoth(null,res1,res2);
 });
  requestWithRetry("url2",function(err,result){
       if(err) handleBoth(err,null,null);
       res2 = result;
       done++;
       if(done === 2) handleBoth(null,res1,res2);
 });
 function handleBoth(err,res1,res2){
     // both responses available here, the error too if an error occurred.
 }

至于重试,它可以是requestWithRetry它本身的一部分,应该只检查err回调中的not是否为null,如果是,则重试一次或两次(取决于您的期望行为)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个分支的类的最简单方法

来自分类Dev

在循环中的所有AJAX请求完成后,如何执行回调?

来自分类Dev

自动执行https请求的最简单方法

来自分类Dev

jQuery.ajax-每个ajax请求是否可能触发两个成功回调?

来自分类Dev

在两个值之间切换整数变量的最简单方法

来自分类Dev

比较bash中两个文件列表的最简单方法?

来自分类Dev

查找两个像素之间距离的最简单方法是什么?

来自分类Dev

检查两个图像是否相同的最简单方法是什么?

来自分类Dev

在两个值之间切换整数变量的最简单方法

来自分类Dev

根据冒号将字符串分为两个值的最简单方法

来自分类Dev

查找两个像素之间距离的最简单方法是什么?

来自分类Dev

比较来自相同类型的两个对象的数据成员的最简单方法

来自分类Dev

检查两个图像是否相同的最简单方法是什么?

来自分类Dev

Erlang:检查两个值是否为零的最简单方法?

来自分类Dev

检查两个CRgn是否相交的最简单方法是什么?

来自分类Dev

连接两个 JPEG 视频的最简单方法是什么?

来自分类Dev

将两个 numpy 数组打印为表格的最简单方法

来自分类Dev

筛选两个可选条件的更简单方法

来自分类Dev

在 Python 中比较两个图像的简单方法

来自分类Dev

将两个postgres数据库合并为一个的最简单方法?

来自分类Dev

在一个mysql查询中计算两个不同事物的最简单方法

来自分类Dev

JavaScript本机Promise对两个结果执行回调

来自分类Dev

如何执行两个回调功能?

来自分类Dev

两个异步函数后的回调

来自分类Dev

Java单元测试:测试回调是否被调用的最简单方法

来自分类Dev

在最大的日期范围描述中显示两个日期之间的差异的最简单方法是什么?

来自分类Dev

形成两个对象列表的并集的最简单方法(包含Int和字符串值)

来自分类Dev

我有两个Xcode项目,找出每个文件中有两个不同的最简单方法是什么?

来自分类Dev

我有两个Xcode项目,找出每个文件中有两个不同的最简单方法是什么?

Related 相关文章

  1. 1

    比较两个分支的类的最简单方法

  2. 2

    在循环中的所有AJAX请求完成后,如何执行回调?

  3. 3

    自动执行https请求的最简单方法

  4. 4

    jQuery.ajax-每个ajax请求是否可能触发两个成功回调?

  5. 5

    在两个值之间切换整数变量的最简单方法

  6. 6

    比较bash中两个文件列表的最简单方法?

  7. 7

    查找两个像素之间距离的最简单方法是什么?

  8. 8

    检查两个图像是否相同的最简单方法是什么?

  9. 9

    在两个值之间切换整数变量的最简单方法

  10. 10

    根据冒号将字符串分为两个值的最简单方法

  11. 11

    查找两个像素之间距离的最简单方法是什么?

  12. 12

    比较来自相同类型的两个对象的数据成员的最简单方法

  13. 13

    检查两个图像是否相同的最简单方法是什么?

  14. 14

    Erlang:检查两个值是否为零的最简单方法?

  15. 15

    检查两个CRgn是否相交的最简单方法是什么?

  16. 16

    连接两个 JPEG 视频的最简单方法是什么?

  17. 17

    将两个 numpy 数组打印为表格的最简单方法

  18. 18

    筛选两个可选条件的更简单方法

  19. 19

    在 Python 中比较两个图像的简单方法

  20. 20

    将两个postgres数据库合并为一个的最简单方法?

  21. 21

    在一个mysql查询中计算两个不同事物的最简单方法

  22. 22

    JavaScript本机Promise对两个结果执行回调

  23. 23

    如何执行两个回调功能?

  24. 24

    两个异步函数后的回调

  25. 25

    Java单元测试:测试回调是否被调用的最简单方法

  26. 26

    在最大的日期范围描述中显示两个日期之间的差异的最简单方法是什么?

  27. 27

    形成两个对象列表的并集的最简单方法(包含Int和字符串值)

  28. 28

    我有两个Xcode项目,找出每个文件中有两个不同的最简单方法是什么?

  29. 29

    我有两个Xcode项目,找出每个文件中有两个不同的最简单方法是什么?

热门标签

归档