Firestore Set Catch最后

时间:2018-03-20 16:13:34

标签: javascript firebase promise google-cloud-functions google-cloud-firestore

如何在执行Firestore操作后清理资源,我想在保存记录后使用“finally”块关闭对话框但是它抱怨它不是一个函数。 我一直在寻找API参考,但我发现的只是入门部分的几个例子。

我的代码是这样的:

db.collection("posts")
.doc(doc.id)
.set(post)
.then(function(docRef) {
    //todo
})
.catch(function(error) {
    console.error("Error saving post : ", error);
})
/*.finally(function(){
    //close pop up          
})*/
;

2 个答案:

答案 0 :(得分:5)

节点6中的本机Promise没有finally()方法。只有then()和catch()。 (See this table,节点位于最右侧。)

如果你想在承诺链的末尾无条件地做任何事情而不管成功或失败,你可以在then()和catch()回调中复制它:

doSomeWork()
.then(result => {
    cleanup()
})
.catch(error => {
    cleanup()
})

function cleanup() {}

或者您可以使用TypeScript,它在语言中尝试/ catch / finally定义。

答案 1 :(得分:0)

那么在then / catch之后的A将始终被执行,只要:

  • 如果执行catch,则其中的代码不会引发错误(如果发生,则执行下一个catch)。
db.collection("posts")
.doc(doc.id)
.set(post)
.then(function(docRef) {
    //any code, throws error or not.
})
.catch(function(error) {
    console.error("Error saving post : ", error);
    //this code does not throw an error.
}).then(function(any){
    //will always execute.
});