如何使用Q promise与下划线过滤器

时间:2016-05-25 15:59:59

标签: javascript promise underscore.js q

我发现了类似的问题和不同的建议,但我无法让它发挥作用。有人说你不能这样做,而其他人给出了一个很长的解决方案来让它运作起来。它被退回并且未定义。

服务

 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())
            })

    })

1 个答案:

答案 0 :(得分:1)

我不确定你为什么要filterSubdivisions()返回一个承诺,特别是如果你马上解决它而不是做任何异步动作。无论如何,你永远不会将.then()回调附加到该承诺。

您正在使用已过滤的数组解析它,但永远不会有回调来获取该数据。