Возврат суперагентного объекта ответа из функции - PullRequest
0 голосов
/ 15 марта 2019

Я использую суперагент для выполнения HTTP-вызовов API с Node.s, и вот как мой код выглядит сейчас:

async function getProjectParameterValue(projectId, parameter) {
    let projectParamsUrl = "some/endpoint" + projectId + "/parameters/";
    let url = "http://baseUrl/" + projectParamsUrl + parameter;
    return await superagent.get(url).auth(userName, password)
        .type('json')
        .accept('json')
        .then(response => {
            return response.body;
        })
        .then(responseBody => {
            return responseBody;
        });
}

В этом случае функция getProjectParameterValue возвращает обещание, которое должно быть разрешено после вызова его снаружи, например:

getProjectParameterValue("myProjectId", "someParameter")
    .then(responseBody => {
       log.info(responseBody);
    });

Я ищу способ, чтобы функция getProjectParameterValue возвращала объект суперагентного ответа напрямую. Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете достичь этого, используя обещания, подобные приведенным ниже.

function getProjectParameterValue(projectId, parameter) {
    let projectParamsUrl = "some/endpoint" + projectId + "/parameters/";
    let url = "http://baseUrl/" + projectParamsUrl + parameter;
    return new Promise(function(resolve, reject) {
        superagent.get(url).auth(userName, password)
        .type('json')
        .accept('json')
        .then(response => {
            //you can manupulate result set as per requirements. 
            return response.body
        })
        .then(result => {
            resolve(result)
        });
       };
  });

}

И вызывать функцию так:

(async () => {
    const responseBody = await getProjectParameterValue("myProjectId", "someParameter")
})();
...