2017-08-10 11 views
0

私はそうのような(MeteorJSを使用して、ジャバスクリプト)ストライプサーバ上の非同期メソッド内のAPIを呼び出すためにしようとしている:コールストライプAPIと待っ

selectedPlan = await Stripe.plans.retrieve(stripePlanId);

ストライプAPI呼び出しを(NodeJSを使用してライブラリ)はエラーを処理するためのコールバックを持っていますが、awaitパターンを使用している場合、どのような構文を使用してエラーをキャプチャできますか?

[error, selectedPlan] = await Stripe.plans.retrieve(stripePlanId);

のようなものを試してみましたが、それは動作しませんでした。

+0

'retrieve'は、そうでない場合は、あなたが'それをawait'ことができない、約束を返す必要があります。コールバックが必要な場合は、まずそれを約束してください。 – Bergi

答えて

0

それは次のようにする必要があります:

try { 
    selectedPlan = await Stripe.plans.retrieve(stripePlanId); 
} catch (error) { 
    // error handling 
} 
+0

私は他のAPIコール結果とマージする必要があるので、tryブロックの外側でselectedPlanの結果を利用できるようにしたい。単にtryブロックの外側に宣言するだけではうまくいかなかったようです。レスポンスの形式はStripe API固有のものであるとは思いますが、それはありませんか? – ASX

+0

'try/catch'ブロックの外で' selectedPlan'を宣言するだけです。このように: 'let selectedPlan;'そして、いいえ、「待っている」はこのように働いています。それは約束を守り、却下された場合にはエラーを投げます。これを見てください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await – Styx

+0

ありがとう - しかし、私の理解は、このメソッドを介してキャプチャされたエラーは、実際のAPI呼び出し自体は失敗します。別の(ビジネスロジック)理由で失敗した場合、詳細情報を取得しません。つまり、catch()ブロックでキャッチされたエラーは、ここのコールバック関数では同じ 'エラー'ではありません。https://stripe.com/docs/api/node#retrieve_plan は間違っていますか? – ASX

関連する問題