【发布时间】:2021-04-02 09:56:16
【问题描述】:
我想做什么:
在支付网关服务器中放置支付订单并将订单详细信息返回给客户端
使用 firebase 云函数
Order() 执行异步工作并在function(err,data) 中返回订单数据
我尝试了什么:
如您所见,我尝试使用 callback 机制同步它,但似乎无法完成这项工作。仍然返回 null。
index.js 代码
const functions = require("firebase-functions");
/* eslint-disable */
exports.order = functions.https.onCall((amnt, context) => {
var orderdata;
const Ippopay = require('node-ippopay');
var ippopay_instance = new Ippopay({
public_key: 'pk_live_0WZhCNC5l7PJ',
secret_key: 'secret ;) ',
});
function Order(callback){
ippopay_instance.createOrder({
amount: amnt,
currency: 'DOLLAR',
payment_modes: "cc,dc,nb",
customer: {
name: "Test",
email: "test@gmail.com",
phone: {
country_code: "63",
national_number: "5876543210"
}
}
},
function (err, data) {
orderdata=data;
});
callback(orderdata);
}
return Order(function(order) {
//response.send(order);
return orderdata;
});
});
【问题讨论】:
-
只需将
callback(orderdata)移动到function (err, data) {...}中。如果不这样做,回调将在 orderdata 填充之前运行。 -
不幸的是这不起作用..它应该有,但它没有
-
那么你需要进一步调试它......“不起作用”并没有给我们任何关于问题确切性质的线索。如有必要,您需要逐行进行更详细的调查
-
我原以为
function (err, data) { callback(data); });实际上就是您所需要的。所以也许检查你没有任何控制台错误,检查data是否真的包含你所期望的,检查函数是否正在执行,等等。
标签: javascript node.js firebase google-cloud-functions asynccallback