在新的 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中文网其他相关文章!