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