从函数返回超级代理响应对象

时间:2019-03-15 04:53:21

标签: node.js superagent

我正在使用superagent从Node.s进行HTTP API调用,这是我的代码现在的样子:

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返回一个promise,在外部调用它后必须将其解析,如下所示:

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

我正在寻找使函数getProjectParameterValue直接返回超级代理响应对象的方法。有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用以下给出的承诺来实现这一目标。

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")
})();