2016-10-14 9 views
-1

私は関数を返すという約束を持っていますが、関数は独自のエラー処理を持っていますが、時には何らかの理由でこれが見逃されます。プロミスが値を返さない場合

私は約束が失敗した場合/ nullを返し、別の関数を返すというフォールバックを追加したいと思います。

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync(); 
    }); 
} 

Return self.trySync():それがコメントアウトされたかのように、それはそこにはないと仮定してエラーハンドラを必要とします。私の試みはうまくいかないようです。

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     //return self.trySync(); 
    }, function(error) { 
     router.navigate('home'); 
    }); 
} 
+0

を使いたい 'trySync'は約束を返さない場合、あなたはそれをテストすることができますが、それはその約束を返す場合決して解決しない、それはより困難になるだろう – adeneo

+0

「*それがコメントアウトされたかのようにそこにないと仮定している」と正確に何を意味しますか?何が「そこにいない」になるのだろうか? – Bergi

答えて

1

difference between .then(…).catch(…) and .then(…, …)をご覧ください。 trySync()から(とのみそこからの)エラーを処理する

、あなたは

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync().catch(function(error) { 
      router.navigate('home'); 
     }); 
    }); 
} 
関連する問題