Angularjs $http.get 和 $http.post 之间的延迟不一致
Angularjs inconsistent delays between $http.get and $http.post
这是我的一个控制器的部分代码。
//service call to add record to database
//bookApi has addBook method which contains a $http.post inside
bookApi.addBook(book);
//service call to show list of all books
//bookApi has a getBooks method which contains $http.get call
bookApi.getBooks().then(function(response){
$scope.booklist = response.data;
},function(data,status,config,headers) {
alert('some error occured');
});
当 booklist 显示在页面中时,有时 getBooks 调用先于 addBook 完成,因为它们都是异步的。 SO在页面中,当在添加书籍页面提交书籍时,下一个显示的页面是书籍列表页面,有时不包含新添加的书籍(您需要刷新)。
如何避免这种情况?
像这样以扁平的方式将 promise 链接在一起:
bookApi.addBook(book).then(function() {
return booksApi.getBooks();
}).then(function(response) {
$scope.booklist = response.data;
}, function(data,status,config,headers) {
alert('some error occured');
});
为了对抗回调地狱,return getBooks
在回调中。通常,好的 promise 方法说你不应该将 then
链接到另一个 then
,而是 return promise 并继续链。
这是我的一个控制器的部分代码。
//service call to add record to database
//bookApi has addBook method which contains a $http.post inside
bookApi.addBook(book);
//service call to show list of all books
//bookApi has a getBooks method which contains $http.get call
bookApi.getBooks().then(function(response){
$scope.booklist = response.data;
},function(data,status,config,headers) {
alert('some error occured');
});
当 booklist 显示在页面中时,有时 getBooks 调用先于 addBook 完成,因为它们都是异步的。 SO在页面中,当在添加书籍页面提交书籍时,下一个显示的页面是书籍列表页面,有时不包含新添加的书籍(您需要刷新)。
如何避免这种情况?
像这样以扁平的方式将 promise 链接在一起:
bookApi.addBook(book).then(function() {
return booksApi.getBooks();
}).then(function(response) {
$scope.booklist = response.data;
}, function(data,status,config,headers) {
alert('some error occured');
});
为了对抗回调地狱,return getBooks
在回调中。通常,好的 promise 方法说你不应该将 then
链接到另一个 then
,而是 return promise 并继续链。