我发现了类似的问题和不同的建议,但我无法让它工作。有人说你做不到,而另一些人则给出了一个很长的解决方案来让它工作。它正在返回且未定义。
服务
filterSubdivisions: (response) => {
var arry = [];
let deferred = Q.defer();
arry = _.filter(response, (item) => {
if (item.status === 'A') {
item.color = 80;
item.status = 'Active';
return item
} else {
item.color = 255;
item.status = 'Future';
return item
}
});
deferred.resolve(arry);
return deferred.promise;
}
服务呼叫
AuthService.get().then((result) => {
SubdivisionService.getSubdivisions(result.userId, result.token)
.then((response) => {
if (response)
SubdivisionService.filterSubdivisions(response)
})
.then((res) => {
if (res)
SubdivisionService.loopSubdivisions(res)
})
.then((response) => {
if (response)
StorageService.set('Subdivisions', response)
})
.then(() => me.onGoHome())
.catch(error => {
AlertService.error('subdivisions')
.then((error) => ErrorService.post(error))
.then(() => me.onGoHome())
})
})
我不确定为什么你filterSubdivisions()
返回一个承诺,特别是如果你立即解决它而不是执行任何类型的异步操作。 无论如何,您永远不会在该承诺上附加.then()
回调。
您正在使用过滤后的数组解析它,但永远不会有回调来获取该数据。