gpt4 book ai didi

javascript - API调用后的 Angular 回调

转载 作者:行者123 更新时间:2023-12-02 16:53:28 25 4
gpt4 key购买 nike

我有一个 Angular 应用程序,但有时我的回调似乎在应有的时间之前执行。我已经为我的 api 调用定义了一个服务,它的方法如下所示。

    function addOffer(id) {
var request = $http({
method: "get",
url: "/api/campaign/offers",
params: {
action: "add",
id: id
}
});
return ( request.then(handleSuccess, handleError) );
}
function handleError(response) {

// The API response from the server should be returned in a
// nomralized format. However, if the request was not handled by the
// server (or what not handles properly - ex. server error), then we
// may have to normalize it on our end, as best we can.
if (
!angular.isObject(response.data) || !response.data.message
) {

return ( $q.reject("An unknown error occurred.") );

}

// Otherwise, use expected error message.
return ( $q.reject(response.data.message) );

}

function handleSuccess(response) {
return ( response.data );

}

然后在我的 Controller 中,我定义了这样的作用域函数

$scope.addOffer = function(){
campaignService.addOffer($scope.id).then(
loadRemoteData()
);
};

加载远程数据功能将客户端与应用程序后端存储的数据同步。

我的问题是,在 Controller 方法 addOffer 中,loadRemoteData() 函数在添加优惠之前触发,因此它会在没有新优惠的情况下加载数据。但在强制刷新后,该优惠就出现了。是否需要做一些不同的事情才能按预期工作?

最佳答案

问题出在 loadRemoteData() 中的 ()。无论您在何处执行此操作,loadRemoteData() 函数都将实际执行。如果您只想将 loadRemoteData 函数作为成功回调传递给 .then(),那么您只需传递该函数的名称即可。

将 Controller 代码更改为:

$scope.addOffer = function(){
campaignService.addOffer($scope.id).then(loadRemoteData);
};

关于javascript - API调用后的 Angular 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387789/

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