2017-03-26 17 views
0

saveThings()の呼び出し側が正確なエラーの説明(AまたはB)を取得するにはどうすればよいでしょうか。現在、タイプの私の拒否のcatch()節に巻き込まれるのは、このように、発信者は常にメッセージBで終わり...ES6約束前にキャッチを返す

saveThings() { 
    return api.post(endpoint, data) 
    .then(response => { 
     if (!response) 
      reject({message: 'error of type A - faulty response'}); 

     resolve('all went well'); 
    }) 
    .catch(err => { 
     throw new Error('error of type B - call failed'); 
    }); 
} 
+0

'reject'と' resolve'とは何ですか? – Bergi

答えて

2

まあ、それはとき、したがって、あなたが

saveThings() { 
    return api.post(endpoint, data) 
     .catch(err => { 
      throw new Error('error of type B - call failed'); 
     }) 
     .then(response => { 
      if (!response) 
       throw new Error('error of type A - faulty response'); 

      return 'all went well'; 
     }); 
} 

または

捕まえるかに依存します

かなり同等です。最初のものだけが、catchの後に中間のPromiseを作成し、2番目のものは作成しません。

+0

@Bergiにもありがとうございます。物事を回す最初の解決策はとてもシンプルです。余りにも多くの木は、フォレストを見ませんでした。 –

3

あなたがuse .then(…, …) instead of .then(…).catch(…)したいと思う:

return api.post(endpoint, data).then(response => { 
    if (!response) 
     throw {message: 'error of type A - faulty response'}; 
    return 'all went well'; 
}, err => { 
    throw new Error('error of type B - call failed'); 
});