deferred.resolve(data)之间有什么区别;和deferred.resolve();在angularJS服务电话?

时间:2016-04-06 19:32:42

标签: jquery angularjs deferred

我找到了2个变体 1.deferred.resolve(); 2.deferred.resolve(data);

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

2 个答案:

答案 0 :(得分:3)

第一种情况:

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'"
    }
);

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

答案 1 :(得分: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) - 请求失败,此处; s;一些数据

希望它足够清楚