首页 >web前端 >js教程 >在'Promise”构造函数中使用'async/await”是反模式吗?

在'Promise”构造函数中使用'async/await”是反模式吗?

DDD
DDD原创
2024-12-18 22:00:16520浏览

Is Using `async/await` Inside a `Promise` Constructor an Anti-Pattern?

在新的 Promise() 构造函数中使用 async/await 是反模式吗?

异步编程可能具有挑战性,特别是在处理嵌套回调时。为了简化这一点,ES6 引入了 async/await 语法。但是,在 new Promise() 的构造函数中使用 async/await 时,需要小心。

在提供的示例中:

return new Promise(async (resolve, reject) => {
  eachLimit((await getAsyncArray), 500, (item, callback) => {
    // do other things that use native promises.
  }, (error) => {
    if (error) return reject(error);
    // resolve here passing the next value.
  });
});

您正在使用 wait 调用 getAsyncArray ,它返回一个 Promise,但在 Promise 构造函数的执行器函数内。这被称为“Promise 构造函数反模式”。

此模式的主要危险是错误可能无法正确处理。异步性可能会产生不可预测的行为,而利用 async/await 会使发现潜在问题变得更加困难。

例如,getAsyncArray 函数中的拼写错误会导致 TypeError,但它可能不会被eachLimit 回调捕获错误处理。但是,如果删除 async/await,错误将被抛出到 Promise 构造函数之外并进行适当处理。

总之,虽然在 Promise() 的构造函数中使用 async/await 可能看起来很方便,由于潜在的错误处理问题,它是一种反模式。相反,请考虑在 Promise 构造函数之外使用 async/await 以确保正确的错误传播和代码可维护性。

以上是在'Promise”构造函数中使用'async/await”是反模式吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn