javascript - 如果我想在 .then() 触发后做某事,可以在 JavaScript 中使用 Promise

标签 javascript node.js

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/

相关文章:

javascript - RXJS:属性 animationFrame 在 typeof Scheduler 上不存在

javascript - 执行 javascript 并返回响应 (JavaFX/Swing)

javascript - 尝试理解 Cycle.js 中的树结构组成

javascript - 基于字符串值的数组排序不起作用

表单对象的 JavaScript 大小

javascript - 如何使用指令添加 css 样式?

node.js - 尽可能快地在 MongoDB 中加载一百万条记录

node.js - Passport 反序列化用户未在 sails 中调用

node.js - 如何在一个 EC2 实例上运行多个应用程序

javascript - NodeJS 异步回调未触发