我正在开发一个支付系统。我使用云函数模拟node.js。我从Angular向Cloud函数发送了一个请求。然后,我将第二个请求从云功能发送到支付API。支付API成功获取请求,支付成功。但是,我想,由于异步结构,响应在Angular端显示为null。
角度代码:
constructor(private fns: AngularFireFunctions) {
}
...
...
const callable = this.fns.httpsCallable('app');
var data = callable({req: request})
data.subscribe(async res => {
console.log(res);
});
云功能:
exports.app = functions.https.onCall((data, context) => {
var res = "";
iyzipay.payment.create(data.req, function (err, result) {
res = result;
});
return res;
});
我该如何等待回复?我试过async/await,但我不完全了解这些主题。非常感谢。
继续搜索后,我找到了这样的解决方案:
云功能:
exports.app = functions.https.onCall((data, context) => {
return new Promise((Resolve, Reject) => {
iyzipay.payment.create(data.req, async function (err, result) {
if (err) {
Reject({
id: 'Payment',
message: err
})
}
if (result && result.status == 'failure') {
Reject({
id: 'Payment Failed',
message: result.errorMessage
})
}
Resolve(result)
});
});
});
像阿基夫说的那样棱角分明的一面:
const callable = this.fns.httpsCallable('app');
const res = await callable({ req: request }).toPromise();
console.log(res);