【问题标题】:what is the difference between deferred.resolve(data); and deferred.resolve(); in angularJS service calls?deferred.resolve(data) 和有什么区别?和 deferred.resolve();在 angularJS 服务调用中?
【发布时间】:2016-04-06 19:32:41
【问题描述】:

我发现了 2 个变体,例如 1. deferred.resolve(); 2. deferred.resolve(data);

服务响应后。 2有什么区别。我必须严格使用哪一个。

【问题讨论】:

  • 在一个中,您正在传递一些数据。当你需要传递一些数据时,你应该使用它。
  • 第一个在没有向resolv函数发送任何数据的情况下解决promise,第二个向resolved函数发送data

标签: jquery angularjs deferred


【解决方案1】:

第一个场景:

function getPromise() {
    var deferred = $q.defer();
    deferred.resolve();

    return deferred.promise;
}

getPromise().then(
    function(data) {
        console.log(data); // Output "undefined"
    }
);

第二种情况:

function getPromise() {
    var deferred = $q.defer();
    var data = "hello";
    deferred.resolve(data);

    return deferred.promise;
}

getPromise().then(
    function(data) {
        console.log(data); // Output "'hello'"
    }
);

所以这一切都与你如何解决承诺有关,无论是否将信息传递给已解决的承诺中的函数。

【讨论】:

    【解决方案2】:

    当您调用服务时,这意味着您正在等待服务器的响应。 响应可能是简单的成功或一些数据。

    myServiceFunction = function() {
        var deferred = $q.defer();
           $http.post/get(myURL,someData/*not mandatory*/)
              .success(function(response){ // you get into this function when everything goes right
                   deferred.resolve(response); //your sending back the server's response to your controller (or whatever has called this function)
            })
             .error(function(response){
                  deferred.reject(response); // your also sending back the server's response but using reject means that something gone wrong on server call
        })
        return deferred.promise; // don't forget to send the promise!!
    }
    

    在上面的示例中,我将响应服务器发送回调用服务功能的服务器。

    但如果您只需要知道请求成功,那么一个简单的deferred.resolve() 就足够了(deferred.reject() - 告诉它没有成功)。

    为了简短起见,您应该知道以下几点:

    • deferred.resolve() - 表示请求成功
    • deferred.reject() - 请求失败
    • deferred.resolve(data) - 表示请求成功,这里有一些数据
    • deferred.reject(data) - 请求失败,这里有一些数据

    希望它足够清楚

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多