如何从NodeJS中的函数返回Post请求的响应?

塔马斯·科瓦奇(TamásKovács)

我的项目中有一个函数可以处理大多数API请求(请参见下面的简化草案)

function sendRequest(){

    var reqbody;
    var resp;

    reqbody = unimportantRandomFunction();

    request.post({
        headers: {  'content-type'  : 'application/xml',
                    'accept'        : 'application/xml'},
        url: process.env.APIURL,
        body: reqbody
    }, function(error, response, body){
        resp = convert.xml2js(body, {compact:true});
    });

    return resp;
}

我面临的问题是request.post是异步的,到我收到响应时,已经返回了未定义的值。我尝试了对promises的实验(这是我的新手),但显然我不能将返回值放在.then块中,因为该返回值不属于sendRequest函数(如果我错了,请纠正我)。有什么想法可以让return语句起作用,那就是等待“ resp”的值被分配吗?

Tanaike

这个修改怎么样?请认为这只是几个可能的答案之一。

用无极sendRequest()并在异步函数中检索响应值。在以下修改的脚本中,首先sample()运行。sendRequest()运行,那么响应值在检索console.log(res)

修改后的脚本:

function sendRequest() {
  return new Promise((resolve, reject) => {
    var reqbody;
    var resp;

    reqbody = unimportantRandomFunction();

    request.post(
      {
        headers: {
          "content-type": "application/xml",
          accept: "application/xml"
        },
        url: process.env.APIURL,
        body: reqbody
      },
      function(error, response, body) {
        if (error) reject(error);
        resp = convert.xml2js(body, { compact: true });
        resolve(resp);
      }
    );
  });
}

async function sample() {
  const res = await sendRequest().catch(err => console.log(err));
  console.log(res);
}

sample();  // This function is run.

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从POST请求返回数据/响应

如何从Axios POST请求返回18个字符串的响应

在Struts2 RESTful插件POST请求中返回响应

PHP:如何从$ .post请求返回数据作为响应?

如何等待我的python函数返回,以及如何使用控制器nodejs返回响应主体中的数据?

在nodeJS中检索POST请求的JSON响应

尽管POST请求中缺少字段,但SwaggerHub模拟响应仍返回201

Netlify NodeJS函数始终返回“对预检请求的响应未通过”

如何从Angular中的HTTP请求返回JSON响应的特定属性?

如何在HTTP响应中返回HTML文件(Azure函数)

如何从请求中返回响应(post | get)?

NodeJS:如何将“聚合”(光标)对象转换为CSV并使用Express从请求返回CSV响应?

如何从stripe.checkout.session.listLineItems请求中获取匿名aysnc函数lineItems到lambda返回响应中

如何使用Wiremock在响应中返回字段中的请求正文

如何在nodejs中返回响应?

如何在POST请求中返回数据(django / tastypie)

等待来自Nodejs中POST请求的JSON响应数据(摩卡测试)

如何在函数javascript / nodejs中返回函数?

如何更改NodeJS请求流响应

如何从ajax post请求中获取响应头

缓存对 Firebase 函数发出的 POST 请求的响应

返回对nodejs中调用函数的html响应

如何在 AngularJS 中返回对调用函数的响应?

如何从 POST 请求响应中获取响应头

如何从函数返回值以使用它并在Nodejs的路由器中响应它?

NodeJS 中的 Axios Post 请求

如何响应 Node.js 中的 post 请求?

NodeJS http:在返回之前等待请求侦听器中的另一个响应

如何制作从响应中返回文本的函数?