我有我想要「重新驗證」的數據。所以我需要做一個get請求,保存回調中的數據,刪除當前數據,然後用回調中的數據發表帖子。
我需要以某種方式使用$ q。
也許我完全沒有,但這是我的嘗試。
$scope.reSaveBIM = function(){
var defer = $q.defer();
defer.promise
.then(function(){
$http.get('/api/bim/' + $scope.activePartOfBim._id)
.success(function(fullBIM){
console.log(fullBIM); //Defined
return fullBIM;
}
);
})
.then(function(fullBIM){
console.log(fullBIM); //Undefined
$http.delete('/api/bim/' + $scope.activePartOfBim._id);
return fullBIM
})
.then(function(fullBIM){
$http.post('/api/bim', {bim:JSON.stringify(fullBIM)});
});
defer.resolve()
};
來自第一個回調的數據不會在鏈接中返回。我在正確的軌道上嗎?我也嘗試使用$ q.all,但失敗了。
任何想法?
當然,我可以建一個金字塔,但我想學習用承諾來平息它。 – Per 2014-09-30 16:54:18
$ http已經對promises進行了操作。 .success()等同於.then()。如果你想平整你的代碼,那麼你不應該內聯你的響應函數。嘗試將函數作爲參數傳遞給成功方法,即.success(mySuccessFunction); – 2014-09-30 16:58:48
存在一個微妙的問題:'firstSuccessFunction'在傳遞給'.success(firstSuccessFunction)'時是'undefined'。 – 2014-09-30 19:22:04