2017-08-10 27 views
0

我試圖調用服務器上的異步方法中的條紋API(JavaScript中,使用MeteorJS),像這樣:調用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

我想在try塊之外提供selectedPlan結果 - 但我需要將它與其他api調用結果合併。簡單地在try塊外聲明它似乎沒有用;我可以想象,響應的格式也是特定於Stripe API的,不是嗎? – ASX

+0

只需在'try/catch'塊之外聲明'selectedPlan'。像這樣:'let selectedPlan;'。不,「await」正在這樣工作 - 它解決了承諾,並在拒絕的情況下拋出錯誤。看看這個: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