MST

星途 面试题库

面试题:JavaScript中如何通过函数构造函数实现简单的并发处理

请阐述在JavaScript中,利用函数构造函数实现并发处理任务的基本思路,并编写一段简单代码示例,例如同时发起多个异步请求并处理响应。
47.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

基本思路

  1. 使用Promise来封装每个异步任务,将其转化为可管理的状态。
  2. 利用Promise.all方法,该方法接受一个Promise数组作为参数,当所有的Promise都变为resolved状态时,它返回的Promise才会resolved,并且会将所有Promiseresolved值组成一个数组返回;如果有任何一个Promise变为rejected状态,它返回的Promise就会立即rejected

代码示例

function asyncTask(url) {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    resolve(xhr.responseText);
                } else {
                    reject(new Error('Request failed with status ' + xhr.status));
                }
            }
        };
        xhr.send();
    });
}

const urls = ['https://example.com/api1', 'https://example.com/api2', 'https://example.com/api3'];
const tasks = urls.map(url => asyncTask(url));

Promise.all(tasks)
   .then(responses => {
        console.log(responses);
    })
   .catch(error => {
        console.error('An error occurred:', error);
    });