事件:'multipleResolves'
添加于:v10.12.0自以下版本弃用:v17.6.0
Stability: 0 - 已弃用
参数
type
<string> 分辨率类型。'resolve'
或'reject'
之一。promise
<Promise> 多次解决或拒绝的承诺。value
<any> 在原始解析后,promise 被解析或拒绝的值。
每当 Promise
出现以下任一情况时,都会发出 'multipleResolves'
事件:
- 解决了不止一次。
- 不止一次被拒绝。
- 解决后拒绝。
- 拒绝后解决。
这对于在使用 Promise
构造函数时跟踪应用程序中的潜在错误很有用,因为多个分辨率会被默默吞下。但是,此事件的发生并不一定表示错误。例如,
可以触发 Promise.race()
'multipleResolves'
事件。
由于在上面的
示例等情况下事件的不可靠性,它已被弃用。Promise.race()
import process from 'node:process'; 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('First call'); resolve('Swallowed resolve'); reject(new Error('Swallowed reject')); }); } catch { throw new Error('Failed'); } } main().then(console.log); // resolve: Promise { 'First call' } 'Swallowed resolve' // reject: Promise { 'First call' } Error: Swallowed reject // at Promise (*) // at new Promise (<anonymous>) // at main (*) // First call
const process = require('node:process'); 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('First call'); resolve('Swallowed resolve'); reject(new Error('Swallowed reject')); }); } catch { throw new Error('Failed'); } } main().then(console.log); // resolve: Promise { 'First call' } 'Swallowed resolve' // reject: Promise { 'First call' } Error: Swallowed reject // at Promise (*) // at new Promise (<anonymous>) // at main (*) // First call
相关用法
- Node.js Worker 'message'事件用法及代码示例
- Node.js tls.Server 'keylog'事件用法及代码示例
- Node.js http.Server 'clientError'事件用法及代码示例
- Node.js cluste 'disconnect'事件用法及代码示例
- Node.js proces 'exit'事件用法及代码示例
- Node.js stream.Writable 'pipe'事件用法及代码示例
- Node.js stream.Readable 'end'事件用法及代码示例
- Node.js cluste 'fork'事件用法及代码示例
- Node.js stream.Writable 'unpipe'事件用法及代码示例
- Node.js Http2Session 'remoteSettings'事件用法及代码示例
- Node.js Worker 'listening'事件用法及代码示例
- Node.js tls.Server 'resumeSession'事件用法及代码示例
- Node.js InterfaceConstructor 'pause'事件用法及代码示例
- Node.js fs.FSWatcher 'change'事件用法及代码示例
- Node.js stream.Readable 'data'事件用法及代码示例
- Node.js http.ClientRequest 'connect'事件用法及代码示例
- Node.js proces 'uncaughtException'事件用法及代码示例
- Node.js Http2Session 'localSettings'事件用法及代码示例
- Node.js REPLServer 'exit'事件用法及代码示例
- Node.js cluste 'online'事件用法及代码示例
- Node.js tls.TLSSocket 'session'事件用法及代码示例
- Node.js Worker 'exit'事件用法及代码示例
- Node.js cluste 'exit'事件用法及代码示例
- Node.js Http2Stream 'trailers'事件用法及代码示例
- Node.js MessagePort 'close'事件用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 'multipleResolves'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。