小编pac*_*a94的帖子

我应该在 Promise.all 中使用 wait 吗?

我正在构建快速中间件,以对数据库进行两次异步调用,以检查用户名或电子邮件是否已在使用中。这些函数返回的承诺没有捕获,因为我希望将数据库逻辑与 req/res/next 逻辑分开,并且我有集中的错误处理,需要next作为参数。在我对本地环境的邮递员测试中,以下代码按预期工作,并且我的集中式错误处理程序将错误返回给客户端:

async checkUsernameExists(username) {
    await this.sequelize.transaction(
      async () =>
        await this.User.findOne({
          where: {
            username,
          },
        }).then(user => {
          if (user) throw new Conflict('Failed. Username already in use.');
        }),
    );
  }  

const checkDuplicateUsernameOrEmail = async (
  { body: { email, username } },
  res,
  next,
) => {

  await Promise.all([
    checkUsernameExists(username),
    checkEmailExists(email),
  ])
    .then(() => next())
    .catch(error => next(error));
};
Run Code Online (Sandbox Code Playgroud)

然而,由于这些checkExists函数是异步的,它们不应该包含在Promise.allawait中吗?或者Promise.all自动执行此操作?

await Promise.all([
    await checkUsernameExists(username),
    await checkEmailExists(email),
  ])...
Run Code Online (Sandbox Code Playgroud)

这会导致 checkUsernameExists 拒绝未处理的承诺,并且不会向客户端发送任何响应。

javascript asynchronous node.js promise express

20
推荐指数
1
解决办法
2万
查看次数

Webpack 5 - 未捕获的 ReferenceError:进程未定义

这里是 Webpack 新手,webpack cli 告诉我我需要为加密提供别名,因为 webpack 不再包含默认节点库。现在我收到此错误,其他答案并没有太大帮助。crypto-browserify正在尝试访问process.browser. 任何人都可以透露更多信息吗?cli 也告诉我要安装,stream-browserify所以我做了。

React v17、Babel 7.12.9、webpack 5.6.0

webpack.common.js

const paths = require('./paths');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const dotenv = require('dotenv-webpack');

module.exports = {
  entry: [paths.src + '/index.js'],
  output: {
    path: paths.build,
    filename: '[name].bundle.js',
    publicPath: '/',
  },
  plugins: [
    new dotenv(),
    new CleanWebpackPlugin(),
    new CopyWebpackPlugin({
      patterns: [
        {
          from: paths.public,
          to: 'assets',
          globOptions: {
            ignore: ['*.DS_Store'],
          },
        },
      ], …
Run Code Online (Sandbox Code Playgroud)

javascript node.js reactjs webpack

16
推荐指数
2
解决办法
1万
查看次数

标签 统计

javascript ×2

node.js ×2

asynchronous ×1

express ×1

promise ×1

reactjs ×1

webpack ×1