async function fetchUserCollection(callback)
{
await client.connect();
const userCollection = client.db('database').collection('users');
await callback(userCollection);
client.close();
}
我正在尝试摆脱回调并转向 Promise。
但是,如果这是一个 promise ,那么 await resolve(userCollection)
在这里将不起作用,因为 resolve()
会立即返回。
这里有没有办法使用 promise ?或者这里需要回调吗?
最佳答案
返回一个普通的 Promise 在这里不起作用,因为普通的 Promise 大多与稍后可能调用的 .then
无关。 Promise 能用调用它的 .then
做的就是在 Promise 解析后执行它们,就是这样。符合规范的 Promise 不具备在某些内容使用 .then
消耗完它们之后运行某些内容的功能。
我认为您目前正在做的事情是最干净的解决方案。尽管 Promise 存在,但回调本质上并不是坏事 - 有时它们有一些用例,就像这里一样。在我看来,回调的主要问题是当它们相互嵌套时,会产生大量丑陋的缩进和难以阅读的代码结果,但这不会在您的代码中发生。
关于javascript - 如果我想在 .then() 触发后做某事,可以在 JavaScript 中使用 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61384576/