如何在循环中运行 fetch() ?

Jit*_*Jit 2 javascript asynchronous async-await

我是 Nodejs 和基于承诺的请求的新手。我想循环地从远程服务器获取数据,然后从所有获取的数据创建一个 JSON 对象。

const fetch = require('node-fetch');
const users = [];

const ids = await fetch('https://remote-server.com/ids.json');
console.log(ids);
// [1,2,3]

ids.forEach(id => {
    var user = await fetch(`https://remote-server.com/user/${id}.json`);
    users.push(user);
});

console.log(users);

Run Code Online (Sandbox Code Playgroud)

预期产出

    [
        {
            name: 'user 1',
            city: 'abc'
        },
        {
            name: 'user 2',
            city: 'pqr'
        },
        {
            name: 'user 3',
            city: 'xyz'
        }
    ]
Run Code Online (Sandbox Code Playgroud)

spe*_*der 10

因此要并行启动:

const ids = await fetch('https://remote-server.com/ids.json');
const userPromises = ids.map(id => fetch(`https://remote-server.com/user/${id}.json`));
const users = await Promise.all(userPromises);
Run Code Online (Sandbox Code Playgroud)

按顺序启动:

const users = [];
const ids = await fetch('https://remote-server.com/ids.json');
for(const id of ids){
    const user = await fetch(`https://remote-server.com/user/${id}.json`);
    users.push(user);
}
Run Code Online (Sandbox Code Playgroud)