条纹承诺挂起,即使它是异步/等待

问题描述

我创建了一个单独的文件来促进基于条带的函数,称为 stripe.js。

在这文件中,我想创建一个检索会话对象的函数,所以我用我的测试密钥初始化条带并创建我导出的函数

const stripe = require('stripe')('my_stripe_key_here');


export async function obtainSession(sid) {
    return await stripe.checkout.sessions.retrieve(sid);
}

现在在 App.vue 中我首先导入函数并尝试使用它:

import { obtainSession } from "./stripe/stripe";

let session = obtainSession(this.session_id)
             .then(session=> {
               return session
             });
console.log(session)

而我得到的只是控制台中的一个未决承诺 (Promise )

我已经尝试了几天并测试了来自 stackoverflow 和其他地方的不同方法,但我似乎无法解决这个承诺。我正在使用有效且现有的会话 ID,但没有结果。

谁能告诉我有什么问题吗?谢谢!

解决方法

let session = obtainSession(this.session_id)
         .then(session=> {
           return session
         });

这样做并不意味着它会在 then 之后返回——它会立即返回,并带有由获取会话返回的 Promise。一旦 promise 解决,continuation 也会运行,但在这个流程中返回基本上没有意义。

您将不得不等待这个电话。或者,如果您登录 then,您将看到结果。

您可以考虑检索它并在 mounted 或类似的内部等待,或者将代码集 session 作为模块变量。但在所有情况下,这都会返回一个你必须在 tHat 赋值之外等待的承诺。