gpt4 book ai didi

javascript - 带有传递参数的 Angular Promise 链接

转载 作者:行者123 更新时间:2023-11-30 17:07:10 25 4
gpt4 key购买 nike

在我的 Angular 应用程序中,我尝试调用一系列函数,每个函数都返回一个值,该值成为下一个函数的输入。从概念上讲,它是这样的:

$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);
});
};

我发现这行不通,因为远程调用的异步性质:它们返回 promise 而不是实际结果。

我假设我需要做这样的事情:

$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();

但我不太了解正确的语法。

最佳答案

如果你想链接一个异步调用,然后返回一个 promise (注意返回值)。该 promise 的解决方案将作为参数传递给下一个 then 处理程序(在本例中,它是 newPrimer3Parameter.id):

 function primer3FromDesignSetting(designSetting) {
var primer3Parameter = _.clone(Restangular.stripRestangular(designSetting));
primer3Parameter = _.omit(primer3Parameter,panelFields);
delete primer3Parameter.id;
return Restangular.all('primer3_parameters').post(primer3Parameter).then(function(newPrimer3Parameter)
{
return newPrimer3Parameter.id;
}, function(error) {
console.log(error);
});
}

关于javascript - 带有传递参数的 Angular Promise 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com