我有这个功能
async function getLineItems(session_id) { var lineItems = [] await stripe.checkout.sessions.listLineItems( `${session_id}`, function(err, data) { // this function is called asynchronously, but I need it synchronous lineItems = data.data } ) return lineItems // this is called before i get the data }
而且我需要以某种方式使该功能stripe.checkout.sessions.listLineItems同步。或者lineItems在调用函数后以某种方式返回。现在该函数每次都返回一个空数组。
stripe.checkout.sessions.listLineItems
lineItems
使用await关键字时,您可以将已履行承诺的返回值分配给变量,如下所示:
await
async function getLineItems(session_id) { try{ const lineItems = await stripe.checkout.sessions.listLineItems(`${session_id}`) return lineItems.data; } catch(e){ //handle error } }
由于listLineItems是分页 API,我强烈建议使用自动分页来收集所有 lineItems
listLineItems
async function getLineItems(session_id) { try{ const lineItems = []; for await (const lineItem of stripe.checkout.sessions.listLineItems(`${session_id}`)) { lineItems.push(lineItem); } return lineItems; } catch(e){ //handle error } }