Javascript API调用后的角度回调

Javascript API调用后的角度回调,javascript,php,angularjs,Javascript,Php,Angularjs,我有一个角度的应用程序,但有时我的回调似乎执行之前,他们应该。我已经为我的api调用定义了一个服务,它的方法如下所示 function addOffer(id) { var request = $http({ method: "get", url: "/api/campaign/offers", params: { action: "add",

我有一个角度的应用程序,但有时我的回调似乎执行之前,他们应该。我已经为我的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 );

    }
然后在我的控制器中,我定义了如下的作用域函数

$scope.addOffer = function(){
    campaignService.addOffer($scope.id).then(
        loadRemoteData()
    );
};
加载远程数据功能将客户端与应用程序后端中存储的数据同步

我的问题是,在控制器方法addOffer中,loadRemoteData()函数在添加offer之前激发,因此它在不加载新offer的情况下加载数据。但是,在一次强制刷新之后,这个提议就出现了。是否需要以不同的方式执行某些操作,以便按预期工作?

问题在于
loadRemoteData()
中的
()
。无论在何处执行此操作,
loadRemoteData()
函数都将实际执行。如果您只想将
loadRemoteData
函数作为成功回调传递给
。然后()
,则只需传递函数名即可

将控制器代码更改为:

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

在对
$q
$http
promise实现进行了大量研究之后,我回到了JavaScript基础知识上来,回答了您的问题。这再次重申了为什么一个人的基础必须非常强大。这是有效的,令人沮丧的是,这是一个如此简单的JS概念。我想我需要复习一下我的JS基础知识。有时我们会错过这些复杂的细节。我做过很多次。但正如你所说,基本面是你所需要的。