#angular #google-cloud-functions
# #угловатый #google-облачные функции
Вопрос:
Я работаю над платежной системой. Я имитирую node.js использование облачных функций. Я отправляю запрос из Angular в облачные функции. Затем я отправляю второй запрос из облачных функций в платежный API. Платежный API успешно получает запрос, и платеж проходит успешно. Но, я думаю, из-за асинхронной структуры, ответ отображается как 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 = resu<
});
return res;
});
Как я могу дождаться ответа? Я пробовал async / await, но я не совсем разбираюсь в этих темах.
Спасибо!
Ответ №1:
После продолжения поиска я нашел такое решение:
Облачные функции:
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 amp;amp; 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);