node.js - 如何在nodejs中同步发送for循环请求?

标签 node.js for-loop asynchronous request

我正在尝试使用nodejs中的request模块在for循环中发出facebook api请求。但我需要使循环和请求调用同步。我究竟做错了什么?

    async function sendRequestAsync(sender, messageData) {
        await request({
            url: "https://graph.facebook.com/v2.6/me/messages",
            qs: {access_token: PAGE_ACCESS_TOKEN},
            method: "POST",
            json: {
                recipient: {id: sender},
                message: messageData
            }
        });
     }

     function sendFoods (sender, results) {
         results.forEach(async result => {
             await request.sendRequestasync(sender, {text: result.cat});
             await request.sendRequestasync(sender, result.data);
             console.log(result);
         });
    }

最佳答案

在 ES8 Async/Await 中,脚本在继续执行之前等待解决 Promise。

async function test() {
  for (let i = 0; i < 5; i++) {
    let result = await req('http://google.com');
    console.log(result.resp.statusCode, i);
  };
};

function req(url) {
  return new Promise(function(resolve, reject) {
    request.get(url, function(err, resp, body) {
      if (err) { reject(err); }
      else { resolve({resp: resp, body: body}); }
    })
  })
};

Try my live example

关于node.js - 如何在nodejs中同步发送for循环请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668853/

相关文章:

java - 嵌套 'for' 循环

cocoa - 从beginSheetModalForWindow获取URL :

scala - 是否有更好的 monadic 抽象替代方案来表示长时间运行的异步任务?

javascript - 如何在 Node js中创建异步回调?

node.js - 选择字段值作为数组 mongoose/mongodb 聚合

node.js - nodejs-serialport => 关闭后重新建立与端口的连接

javascript - NodeJS 结合对象数组范围属性

javascript - 将 C++ 代码连接到 Electron 应用程序中的 HTML Canvas ?

java - ArrayList 添加在循环之外不起作用

javascript - 条件运算符 false 值似乎无法运行