gpt4 book ai didi

javascript - Angular promise : intercept "then"

转载 作者:行者123 更新时间:2023-11-30 12:42:56 24 4
gpt4 key购买 nike

现在我有一个名为 chartModelService 的 Angular 服务,上面有这个方法:

this.fetchChartModel = function() {
return $http.get(fullUrlPath);
};

我有一个使用这些数据的 Angular Controller :

chartModelService.fetchChartModel().then(function(rawData) {
var chartData = chartModelService.translate(rawData);
$scope.populateChart(chartData);
});

我想在 chartModelService 中执行 chartModelService.translate(data) 而不是使用该服务的 Controller 。换句话说,我想将 Controller 更改为下面的代码,其中它接收到的 chartData 已经被翻译:

chartModelService.fetchChartModel().then(function(chartData) {
$scope.populateChart(chartData);
});

如何更改 chartModelService.fetchChartModel() 以便它在返回 promise 的数据之前执行 translate()

最佳答案

改变这个:

this.fetchChartModel = function() {
return $http.get(fullUrlPath);
};

为此:

this.fetchChartModel = function() {
var defObj = $q.defer();

var fetch = $http.get(fullUrlPath);
fetch.then(function(data){
defObj.resolve(chartModelService.translate(data));
});

return defObj.promise;
};

(当然,在您的服务中使用适当的 DI)

这将启动数据获取并在完成后返回包含翻译数据的 promise 。

关于javascript - Angular promise : intercept "then",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746251/

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