簡體   English   中英

Angular 和 Firebase 雲函數返回 null

[英]Angular and Firebase Cloud Functions return null

我正在研究支付系統。 我使用雲函數模擬 node.js。 我從 Angular 向 Cloud Functions 發送請求。 然后,我將第二個請求從雲函數發送到支付 API。 Payment API 獲取請求成功,支付成功。 但是,我猜由於異步結構,響應在 Angular 端顯示為空。

角度代碼:

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;
});

我怎樣才能等待回應? 我嘗試了異步/等待,但我不完全了解這些主題。 謝謝!

繼續搜索后,我找到了這樣的解決方案:

雲功能:

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)
        });
    });
});

像 Akif 那樣有棱有角的一面說:

    const callable = this.fns.httpsCallable('app');
    const res = await callable({ req: request }).toPromise();
    console.log(res);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM