在我的角度應用我想打電話一系列的功能,每一個返回其成爲下一個輸入的值鏈接。概念上,它是這樣的:角承諾與傳遞的參數
$scope.createPanel = function() {
var primer3_parameter_id = primer3FromDesignSetting($scope.selector.designSetting);
var panel = getPanelData(primer3_parameter_id);
Restangular.all('batches').post(panel).then(function(batch) {
createBatchDetailRows(batch);
});
};
我發現這是不行的,由於遠程調用的異步性質:它們返回一個承諾,而不是實際的結果。
我想我需要做這樣的事情:
$scope.createPanel = function() {
primer3FromDesignSetting($scope.selector.designSetting)
.then(getPanelData(primer3_parameter_id))
.then(postPanel(panel)) // the Restangular call wrapped into a new function
.then(createBatchDetailRows(batch))
.catch(function(err) {
// error handler
}
};
function primer3FromDesignSetting(designSetting) {
var primer3Parameter = _.clone(Restangular.stripRestangular(designSetting));
primer3Parameter = _.omit(primer3Parameter,panelFields);
delete primer3Parameter.id;
Restangular.all('primer3_parameters').post(primer3Parameter).then(function(newPrimer3Parameter)
{
return newPrimer3Parameter.id;
}, function(error) {
console.log(error);
});
}
$scope.createPanel();
但我不能完全得到我的頭周圍正確的語法。