@SideWest
Python.Новичок

Как более лаконично решить эту несложную проблему?

Отправляю запрос к VK, используя axios

Axios уже даёт промис, но мне нужно в зависимости от ответа вк возвращать продолжение промиса
Вот так я это реализовал
function apiReq(method, parameters) {

    const baseParametres = {
        groupToken,
        v: '5.101'
    }
    Object.assign(baseParametres, parametres)

    return new Promise((suc, fail) => { // Лишний промис,  без которого хотелось-бы обойтись
            axios.post(`https://api.vk.com/method/${method}`, baseParametres)
                .then(answer => { // Та небольшая логика, из-за которой не могу просто позвращать axios промис
                        if (answer.request) {
                            suc(answer.request)
                        } else {
                            fail(answer.error)
                        }
                    }

                })
    }
///  А ниже вызов этой функции
    apiReq('exampleMethod', exampleParams).then(result => {
        //Вот тут у меня будет уже answer.request, а не просто answer
    }, error => {
        // а тут будет answer.error
    })


Как это можно реализовать получше?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
return axios.post(`https://api.vk.com/method/${method}`, baseParametres)
  .then(answer => answer.request)
  .catch(answer => Promise.reject(answer.error))

Или так, что почти то же самое
return axios.post(`https://api.vk.com/method/${method}`, baseParametres)
  .then(({request}) => request)
  .catch(({error}) => Promise.reject(error))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы