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 并继续链。