type{string} 错误类型。'resolve'或'reject'之一。promise{Promise} 不止一次'resolve'或'reject'的 Promise。value{any} 在原始解析后'resolve'或'reject'的 Promise 的值。
只要 Promise 有以下情况,就会触发 'multipleResolves' 事件:
- resolve不止一次。
- reject不止一次。
- resolve后reject。
- reject后resolve。
这对于在使用 Promise 构造函数时跟踪应用程序中的潜在错误非常有用,因为会以静默方式吞没多个解决。
但是,此事件的发生并不一定表示错误。
例如,[Promise.race()] 可以触发 'multipleResolves' 事件。
process.on('multipleResolves', (type, promise, reason) => {console.error(type, promise, reason);setImmediate(() => process.exit(1));});async function main() {try {return await new Promise((resolve, reject) => {resolve('第一次调用');resolve('吞没解决');reject(new Error('吞没解决'));});} catch {throw new Error('失败');}}main().then(console.log);// resolve: Promise { '第一次调用' } '吞没解决'// reject: Promise { '第一次调用' } Error: 吞没解决// at Promise (*)// at new Promise (<anonymous>)// at main (*)// 第一次调用
