如何使用带有下划线过滤器的 Q promise

how to use Q promise with underscore filter

我发现了类似的问题和不同的建议,但我无法让它工作。有人说你做不到,而其他人则给出了一个很长的解决方案来让它工作。它正在返回且未定义。

服务

 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() 回调附加到该承诺。

您正在使用过滤后的数组解析它,但从来没有回调来获取该数据。