如何在执行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
})*/
;
答案 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将始终被执行,只要:
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.
});