我正在尝试使用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}); }
})
})
};
关于node.js - 如何在nodejs中同步发送for循环请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668853/