2016-05-25 6 views
0

私は異なる提案で同様の質問を見つけましたが、動作させることができません。あなたはそれをすることができないと言う人もいますし、他の人はそれを働かせるために非常に長い解決策を与えていると言う人もいますそれは返され、未定義です。アンダースコアフィルタでQ promiseを使用する方法

サービス

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

あなたは正確に何をしようとしていますか? 'filterSubdivisions'は約束を返しますが、決して' .then'コールバックを付けません。さらに、あなたはすぐにその約束を解決しているのですから、最初にそこで延期されていたのですか?あなたは何をしようとしているのか、あなたが期待した通りに働いていないのかを説明できますか? –

+0

私はちょうどコードを更新しました。私はそれを信じていません! – texas697

+0

それで、問題は 'filterSubdivisions'から返された約束に' .then'を付けることはありませんでしたか? –

答えて

1

私はあなたがそれをすぐに解決する代わりに、非同期のアクションの任意の並べ替えを行っている場合は特にfilterSubdivisions()は、約束を返す持っている理由はわかりません。とにかく、その約束に.then()コールバックを添付することはありません。

フィルタリングされた配列で解決していますが、そのデータを取得するコールバックはありません。

+0

私はすべての約束事を扱うのに慣れていますが、私はもう少し読むことをします。ありがとう! – texas697

関連する問題