gpt4 book ai didi

javascript - 解决异步/等待问题

转载 作者:行者123 更新时间:2023-12-03 00:53:25 26 4
gpt4 key购买 nike

我正在创建一个简单的节点脚本来学习 Cosmos DB 的功能。我想创建一种方法,不必在每个异步函数的顶部提供以下内容(是的,我知道我可以链接异步调用,但这仍然意味着我必须在每个异步函数的顶部使用一个新的数据库实例函数。所以,我想做这样的事情:

const {database} = await client.databases.createIfNotExists({id: databaseId});
const {container} = await database.containers.createIfNotExists({id: containerId});

话虽如此,我已经为此苦恼了几个小时,但找不到一种方法来创建一个数据库和一个容器供我的所有功能共享。这个想法(但不是实现,因为它不起作用,是做这样的事情:

getConnections = async () => {

const {database} = await client.databases.createIfNotExists({id: databaseId});
const {container} = await database.containers.createIfNotExists({id: containerId});

let connections = {};
connections.db = database;
connections.container = container;

return connections;
};

但是由于 getCoonections 方法是异步的(这一定是因为使用它的方法也是异步的),该函数不一定会在另一个函数中进行第一次插入之前完成,从而导致异常。

有没有人找到一种方法来集中这些对象,这样我就不必在应用程序的每个异步函数中声明它们?

最佳答案

听起来您需要在应用程序执行其他操作之前获得这些连接。那么为什么不简单地让应用程序的加载也使用 async/await 呢?

async function init() {
const connections = await getConnections();
const app = initializeTheRestOfYourApp(connections); // now safe to do inserts
};
init();

关于javascript - 解决异步/等待问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52949625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com