[英]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.