วิธีเรียกฟังก์ชัน async จาก Firebase Cloud Function

Oct 28 2020

ฉันกำลังส่งออกฟังก์ชันระบบคลาวด์ Firebase ที่สามารถโทรจากแอป iOS

exports.myFunction = functions.https.onCall((someData, context) => {

});

ฉันจะเรียกใช้ฟังก์ชัน async ได้อย่างไร?

exports.myFunction = functions.https.onCall((someData, context) => {

    return await someAsyncFunction();

});

เอกสารระบุว่าจะคืนคำสัญญา แต่ฉันไม่แน่ใจว่าจะรวมฟังก์ชัน async ที่มีอยู่ให้เป็นสัญญาที่ฉันสามารถคืนได้อย่างไร

https://firebase.google.com/docs/functions/callable

หากต้องการส่งคืนข้อมูลหลังจากการดำเนินการแบบอะซิงโครนัสให้ส่งคืนคำสัญญา ข้อมูลที่ส่งคืนโดยสัญญาจะถูกส่งกลับไปยังไคลเอนต์ ตัวอย่างเช่นคุณสามารถส่งคืนข้อความที่ผ่านการฆ่าเชื้อแล้วซึ่งฟังก์ชันที่เรียกได้นั้นเขียนไปยังฐานข้อมูลแบบเรียลไทม์:

คำตอบ

2 deepak Oct 28 2020 at 20:58

ลองต่อท้าย async หน้าฟังก์ชันเพื่อใช้ a wait

exports.myFunction = functions.https.onCall(async(someData, context) => {

  return await someAsyncFunction();

});

1 DougStevenson Oct 28 2020 at 21:41

คุณสามารถทำให้ฟังก์ชั่นการโทรกลับส่งผ่านonCallasync เพื่อให้คุณสามารถใช้ a wait ข้างในได้:

exports.myFunction = functions.https.onCall(async (someData, context) => {
    return await someAsyncFunction();
});

หรือคุณสามารถคืนคำสัญญาที่ส่งคืนโดยsomeAsyncFunction:

exports.myFunction = functions.https.onCall((someData, context) => {
    return someAsyncFunction();
});

ไม่ว่าในกรณีใดคุณมีหน้าที่ต้องส่งคืนสัญญาที่แก้ไขด้วยข้อมูลเพื่อทำให้เป็นอนุกรมและส่งไปยังแอปไคลเอ็นต์ ทั้งสองวิธีนี้จะทำเช่นนั้น