簡體   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