MST
星途 面试题库

面试题:JavaScript实现复杂API调用及数据处理逻辑

有两个API,API A(地址:'https://api - a.com/data')返回一个包含用户ID数组的数据,API B(地址:'https://api - b.com/user/{id}',其中{id}为用户ID)根据用户ID返回用户详细信息。请用JavaScript编写代码,先调用API A获取用户ID数组,然后依次调用API B获取每个用户的详细信息,并将所有用户详细信息整理成一个新的数组,同时要考虑到并发请求的优化以及错误处理。
42.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
async function getAllUserDetails() {
    try {
        // 调用API A获取用户ID数组
        const responseA = await fetch('https://api-a.com/data');
        if (!responseA.ok) {
            throw new Error(`API A request failed with status ${responseA.status}`);
        }
        const userIds = await responseA.json();

        // 使用Promise.allSettled并发调用API B
        const userDetailsPromises = userIds.map(id => {
            return fetch(`https://api-b.com/user/${id}`)
               .then(response => {
                    if (!response.ok) {
                        throw new Error(`API B request for user ${id} failed with status ${response.status}`);
                    }
                    return response.json();
                });
        });

        const userDetailsResults = await Promise.allSettled(userDetailsPromises);

        const allUserDetails = [];
        userDetailsResults.forEach(result => {
            if (result.status === 'fulfilled') {
                allUserDetails.push(result.value);
            } else {
                console.error(`Error fetching user details: ${result.reason}`);
            }
        });

        return allUserDetails;
    } catch (error) {
        console.error('Overall error:', error);
        return [];
    }
}

// 调用函数获取所有用户详细信息
getAllUserDetails().then(userDetails => {
    console.log('All user details:', userDetails);
});