繁体   English   中英

无法在回调函数内响应API调用(在NodeJS请求中)

[英]Cannot respond the API call inside a call back function (in NodeJS request)

我的NodeJS中有此代码。 如果将return放在request.post调用之前,则会得到响应,但是在回调内部,我会得到{data:null}。

 exports.addItem = functions.https.onCall((req, context)=>{ request.post( {url: submitUrl, form: req}, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); return {result: "OK"}; } else{ return {result: "Not OK"} } } ); }); 

如果有帮助,我在firebase中运行此代码,并在JS中使用firebase函数调用它

return将导致函数结束,但在这样的异步回调中不会将任何内容发送给用户。 没有控制要返回值的调用函数。

我不确定您要实现的目标,但是在此上下文中使用带有return的值将导致该值丢失。

如果您需要提高对Node.js中的异步回调习惯的理解,请查看https://blog.risingstack.com/node-hero-async-programming-in-node-js/

您应该使用async / await来解决此问题

exports.addItem = functions.https.onCall(async (req, res)=>{
  await request.post(
  {url: submitUrl,
  form: req},
  function (error, response, body) {
      if (!error && response.statusCode == 200) {
          console.log(body);
          return {result: "OK"};
          }
      else{
        return {result: "Not OK"}
      }
      }
  );
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM