【发布时间】:2015-12-06 22:55:29
【问题描述】:
我有如下服务方式:
ResourcesService.prototype.list = function ()
{
var deferred = q.defer();
var settings = fetchSettings();
restService.getAll(resourceName, settings)
.then(function (response) {
deferred.resolve(response.data, {
count: response.headers('cr_count'),
total: response.headers('cr_total'),
last: response.headers('cr_last')
});
}, function (error) {
deferred.reject(error.statusText);
});
return deferred.promise;
}
如您所见,我将两个值传递给deferred.resolve,它们是response.data 和一个元数据对象。
在我的调用堆栈中:
//"scenes" is an object that inherits from ResourcesService
scenes
.withLanguage('en-us')
.sort('creation')
.size(2)
.list()
.then(function (firstPage, metadata) {
//firstPage is the "response.data" from previous method
//metadata is undefined, but should be an object with all the values from the headers
});
为什么metadata 未定义?我调试了ResourcesService 并且标题被读取得很好,但是作为deferred.resolve 的参数传递的对象没有被委托给我的回调函数。
deferred.resolve 是否只支持将一个参数传递给回调?我是否必须将此元数据与响应一起放在同一个对象中?
【问题讨论】:
-
另见javascript promise not passing all arguments (using
Q)($q在这方面的作用相同)
标签: javascript angularjs promise deferred