如何将 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())
            })
    })

我不确定为什么你filterSubdivisions()返回一个承诺,特别是如果你立即解决它而不是执行任何类型的异步操作。 无论如何,您永远不会在该承诺上附加.then()回调。

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

相关内容

  • 没有找到相关文章

最新更新