在我的角度应用我想打电话一系列的功能,每一个返回其成为下一个输入的值链接。概念上,它是这样的:角承诺与传递的参数
$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();
但我不能完全得到我的头周围正确的语法。