Javascript 在for循环中等待响应

Javascript 在for循环中等待响应,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我有下面的代码,它使用请求npm进行第三方api调用 但是阵列中什么都没有 有人能帮助我如何等待所有10个api调用吗?请求是非阻塞和异步的。因此,for循环在任何请求调用完成之前一直运行到最后。有很多方法可以做到这一点,但我所知道的最好的方法是使用承诺和承诺 如果您实际上不只是发送10次相同的请求,而是实际迭代一个数组来进行10个api调用,那么您可能会使用.map或类似的东西。@tkausl我在for循环中有查询。主要的问题是看:试着阅读文档,看看伟人的第一个伟大答案。非常感谢您这么冗长的解

我有下面的代码,它使用请求npm进行第三方api调用

但是阵列中什么都没有

有人能帮助我如何等待所有10个api调用吗?

请求是非阻塞和异步的。因此,for循环在任何请求调用完成之前一直运行到最后。有很多方法可以做到这一点,但我所知道的最好的方法是使用承诺和承诺


如果您实际上不只是发送10次相同的请求,而是实际迭代一个数组来进行10个api调用,那么您可能会使用.map或类似的东西。

@tkausl我在for循环中有查询。主要的问题是看:试着阅读文档,看看伟人的第一个伟大答案。非常感谢您这么冗长的解释。您能告诉我什么是普通回调吗?@DarkKnight-您原始代码中的函数err,res{}是普通回调。
const array = []
for (var i = 0; i < 10; i++) {
  request('api_call', function(err, res) {
    array.push(res)
  })
}
console.log(array)
const rp = require('request-promise');
const promises = [];

for (var i = 0; i < 10; i++) {
  promises.push(rp('api_call'));
}
Promise.all(promises).then(results => {
   console.log(results);
}).catch(err => {
   console.log(err);
});
const rp = require('request-promise');

async function myFunc() {
    const results = [];
    for (let i = 0; i < 10; i++) {
        let r = await rp('api_call');
        results.push(r);
    }
    return results;
}


myFunc().then(results => {
   console.log(results);
}).catch(err => {
   console.log(err);
});