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

what is the difference between deferred.resolve(data); and deferred.resolve(); in angularJS service calls?

我找到了 2 个变体,例如 1. deferred.resolve(); 2. deferred.resolve(数据);

服务响应后。 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) - 请求失败,这里是一些数据

希望够清楚

第一种情况:

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

因此,这一切都与您如何解决承诺有关,是否将信息传递给已解决承诺中的函数。