NodeJS - 等待回调完成

用户7811169

伪代码:

app.get('/', (req, res) => {
    request(url, callback1) //callback1 alters 'index' template a bit
    request(url, callback2) //callback2 alters 'index' template a bit
    request(url, callback3) //callback3 alters 'index' template a bit

    res.render('index'); //Have to render after callback1,2,3 are done
});

如何确保render仅在解决所有回调后才调用?

附注。每次调用的 URL 都不相同。

mn.agg

您可以为所有异步调用维护一个计数器,如果计数器等于异步调用的数量,则呈现 res。

下面是相同的代码片段:

app.get('/', (req, res) => {
    var count = 0; 
    request(url1, function(err, data) {
       count++;
       // something to be done
       if(count == 3) {
          res.render('index'); 
       }  
    });
    request(url2, function(err, data) {
       count++;
       // something to be done
       if(count == 3) {
          res.render('index'); 
       }  
    });
    request(url3, function(err, data) {
       count++;
       // something to be done
       if(count == 3) {
          res.render('index'); 
       }  
    });

如果每个回调中要完成的任务相同,您可以在 url 上使用 for 循环而不是编写不同的请求块。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章