我发现了类似的问题和不同的建议,但我无法让它发挥作用。有人说你不能这样做,而其他人给出了一个很长的解决方案来让它运作起来。它被退回并且未定义。
服务
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())
})
})
答案 0 :(得分:1)
我不确定你为什么要filterSubdivisions()
返回一个承诺,特别是如果你马上解决它而不是做任何异步动作。无论如何,你永远不会将.then()
回调附加到该承诺。
您正在使用已过滤的数组解析它,但永远不会有回调来获取该数据。