据我了解,每当查询成功运行时,Angularfire2都会返回Promise
功能:
我有一个应用程序,其中保存项目时会在其中调用一个函数,如果设置查询成功运行(即它收到Promise
问题
但是当离线时查询后返回Promise的代码不会被调用,因此离线期间预期的逻辑或行为应该是什么?
this._itemService.setItem(item).then(()=>{
const message = item.name + saveMessage;
this.snackBar.open(message," ",{duration:2000});
this.location.back();
}
答案 0 :(得分:0)
未调用promise后的代码会导致您收到错误,因为离线时无法访问源。 在Promise之后添加一个ErrorHandling,如下所述: Using success/error/finally/catch with Promises in AngularJS
在ErrorHandling中,您可以添加离线状态下的应用行为。
this._itemService.setItem(item).then(()=>{
const message = item.name + saveMessage;
this.snackBar.open(message," ",{duration:2000});
this.location.back();
).catch((e) => {
//Do what you want when you don't get the Promise
this.location.back();
});
答案 1 :(得分:0)
let itemPromise= this._itemService.setItem(item);
if(navigator.onLine && itemPromise instanceof Promise){
itemPromise.then(()=>{
const message = item.name + "account saved";
this.snackBar.open(message," ",{duration:2000});
...More code
this.closeClicked();
});
}else{
const message = item.name + "account saved";
this.snackBar.open(message," ",{duration:2000});
this.closeClicked();
}