我找到了2个变体 1.deferred.resolve(); 2.deferred.resolve(data);
服务响应后。有什么区别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() - 告诉它没有成功)。
要缩短时间,请注意以下内容:
希望它足够清楚