スキップしてメイン コンテンツに移動

投稿

ラベル(return)が付いた投稿を表示しています

Firebase functionでPromiseをreturnしないとPromise内の処理が不安定になる

Node.jsでfirebase functionsを開発していると、Promiseを使う場面が多いと思いますが、Promiseをfunctionでreturnしないと、functionの処理に非常に時間がかかったり、処理が非常に不安定になるようです。 const myPromise = new Promise ( ( resolve , reject ) => { // なんか処理 } ) ; // myProimise内での処理とは無関係にfunctionのレスポンスを返す。→ 不安定 exports . notReturnPromise = functions . https . onCall ( ( data , context ) => { myPromise . then ( ( ) => { } ) ; return { "code" : "success" } ; } ) ; // myProimise内での処理が終わったらfunctionのレスポンスを返す。→ レスポンスは遅くなるが安定 exports . returnPromise = functions . https . onCall ( ( data , context ) => { return myPromise . then ( ( ) => { return { "code" : "success" } ; } ) ; } ) ; 筆者の環境ではPromiseをreturnしなかった場合、下記のような不具合が多発しました。 Cloud Storageへのアップロードに時間がかかったり、SSLの認証で落ちる firestoreのtransaction処理でエラーが多発 timeout transaction missingなどなど functionでPromiseをreturnするようにしたところ、上記の問題は発生しなくなりました。 functionはPromiseがresolveされるまで、レスポンスを返さないので、Promiseのresol