วิธีเรียกฟังก์ชัน async จาก Firebase Cloud Function
ฉันกำลังส่งออกฟังก์ชันระบบคลาวด์ 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
หากต้องการส่งคืนข้อมูลหลังจากการดำเนินการแบบอะซิงโครนัสให้ส่งคืนคำสัญญา ข้อมูลที่ส่งคืนโดยสัญญาจะถูกส่งกลับไปยังไคลเอนต์ ตัวอย่างเช่นคุณสามารถส่งคืนข้อความที่ผ่านการฆ่าเชื้อแล้วซึ่งฟังก์ชันที่เรียกได้นั้นเขียนไปยังฐานข้อมูลแบบเรียลไทม์:
คำตอบ
ลองต่อท้าย async หน้าฟังก์ชันเพื่อใช้ a wait
exports.myFunction = functions.https.onCall(async(someData, context) => {
return await someAsyncFunction();
});
คุณสามารถทำให้ฟังก์ชั่นการโทรกลับส่งผ่านonCallasync เพื่อให้คุณสามารถใช้ a wait ข้างในได้:
exports.myFunction = functions.https.onCall(async (someData, context) => {
return await someAsyncFunction();
});
หรือคุณสามารถคืนคำสัญญาที่ส่งคืนโดยsomeAsyncFunction:
exports.myFunction = functions.https.onCall((someData, context) => {
return someAsyncFunction();
});
ไม่ว่าในกรณีใดคุณมีหน้าที่ต้องส่งคืนสัญญาที่แก้ไขด้วยข้อมูลเพื่อทำให้เป็นอนุกรมและส่งไปยังแอปไคลเอ็นต์ ทั้งสองวิธีนี้จะทำเช่นนั้น