我正在寻找一种方法,以便在离线时向我的Firebase / Firestore网络应用的用户提供反馈。让我们看一些代码。
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
.then(function () {
alert('Success');
})
.catch(function (error) {
alert("Fail :" + error);
});
在线:调用该功能,成功提醒功能完善。
离线:调用该函数,没有任何反应。但是当用户上线时,该应用会连续显示所有警报。
简而言之,代码的.then
部分仅在线运行。我需要为离线用户提供某种反馈。
答案 0 :(得分:1)
您所看到的是预期的行为。本地写操作不会定期失败,因此没有完成处理程序。如果您想在本地写入完成后执行某些操作,只需使用常规编码逻辑并将其放在set
之后:
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
alert("Value set");
答案 1 :(得分:0)
function doSomething() {
try {
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
.then(function () {
alertify.notify('Data saved online.', 'success', 5);
})
.catch(function (error) {
alert('Error: ' + error);//or
//alertify.notify('Data saved online.', 'error', 10);
});
alertify.notify('Data saved on cache.', 'warning', 5);
} catch (error) {
alert('Error: ' + error);
}}
在线:调用该功能,几乎同时启动2通知(缓存和在线)。
离线:调用该功能,启动1通知,当用户上线时,该应用程序会显示连续通知的所有在线通知。
非常可接受的行为。 我不会说英语,原谅我的错误。