В чем проблема с этим Promise?

254
07 сентября 2021, 17:30

почему возвращается catch?

function getPost(cb){ 
    console.log('Получаем список постов...'); 
    const promise = new Promise((resolve, reject) => { 
        const request = new XMLHttpRequest(); 
        request.open('GET', 'curr.json'); 
        request.onreadystatechange(() => { 
            if(request.readyState === 4){ 
                const response = JSON.parse(request.response); 
                cb(response); 
                resolve(); 
            } else { 
                reject(); 
            } 
        }) 
        request.send(); 
    }) 
    return promise; 
} 
 
btn.addEventListener('click', () => { 
    getPost((cb) => { 
        console.log(cb); 
    }) 
    .then(() => {console.log('Посты загружены успешно!')}) 
    .catch(() => {console.log('Что-то пошло не так!')}) 
})

Answer 1
function getPost(cb){
    console.log('Получаем список постов...');
    const promise = new Promise((resolve, reject) => {
        const request = new XMLHttpRequest();
        request.open('GET', 'curr.json');
        // Используем событие onload, раз вам нужно именно окончание запроса
        request.onload(() => {
            const response = JSON.parse(request.response);
            cb(response);
            resolve();
        });
        // Обработка ошибки
        request.onerror = reject;
        request.send();
    })
    return promise;
}

Почитать:
События xmlHttpRequest

READ ALSO
Как задать стиль dropmenu у antd без CSS

Как задать стиль dropmenu у antd без CSS

Как сделать, чтобы dropmenu отображалось полностью текст строки, а не часть его

140
js header:excel

js header:excel

Всем привет, есть код, когда он скачивает файл excel, при попытки печати, часть страницы обрезается почти пополам и уезжает на второй листМожет...

375
Проблема доработки скомпилированного js [закрыт]

Проблема доработки скомпилированного js [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

93
vue и функции в data

vue и функции в data

есть вопрос, который всё никак не даёт мне покоя, предположим `

81