Node.js 处理多次解析事件

Node.js 处理多次解析事件

“multipleResolves”是进程模块中Process类的一个事件,当Promise被多次解析时发出。

  • 多次解析。
  • 多次拒绝。
  • 在解析之后拒绝。
  • 在拒绝之后解析。

语法:

Event: 'multipleResolves'

参数:

该事件不接受任何参数。

返回值:

该事件不返回任何内容,只返回一个回调函数以进一步操作。

示例1:

index.js

// Node.js program to demonstrate the   
// Process 'multipleResolves' Event 
  
// Importing process module 
const process = require('process'); 
  
// Independent Block which will execute 
setTimeout(() => { 
   console.log('\n') 
   console.log('Greetings from GeeksforGeeks'); 
}, 1000); 
  
// Event 'multipleResolves'  
process.on('multipleResolves', (type, promise, reason) => { 
  
   // Displaying the error  
   console.log("Type: ", type); 
   console.log("Promise: ", promise); 
   console.log("Reason: ", reason); 
}); 
  
const myFunction = async () => { 
   const data = await new Promise((resolve, reject) => { 
  
      // Calling reject after multiple resolve 
      resolve('Resolve Call One'); 
      resolve('Resolve Call Two'); 
      resolve('Resolve Call Three'); 
      reject(new Error('Reject Error Called')); 
   }); 
   return data 
} 
  
// Calling our function 
myFunction().then();

使用以下命令运行 index.js 文件:

node index.js

输出:

类型:resolve   
承诺:Promise { '解析函数调用一' }   
原因:解析函数调用二   
类型:resolve   
承诺:Promise { '解析函数调用一' }   
原因:解析函数调用三   
类型:reject   
承诺:Promise { '解析函数调用一' }   
原因:错误:拒绝错误调用   
位于数据(C:\ Users \ Lenovo \ Downloads \ GeeksforGeeks \ Node JS \ index.js:27:14)   
在新的Promise()   
在myFunction(C:\ Users \ Lenovo \ Downloads \ GeeksforGeeks \ Node JS \ index.js:22:23)   
在Object <默认>(C:\ Users \ Lenovo \ Downloads \ GeeksforGeeks \ Node JS \ index.js:33:1)   
在Module._compile(internal / modules / cjs / loader.js:1138:30)   
在Object.Module._extensions..js(internal / modules /cjs / loader.js:1158:10)   
在Module.load(internal / modules / cjs / loader.js:986:32)   
在Function.Module._load(internal / modules / cjs / loader.js:879:14)   
在Function.executeUserEntryPoint [as runMain](internal / modules /run_main.js:71:12)   
在internal / main / run_main_module.js中的 internal / main / run_main_module.js:17:47 

示例2:

index.js

// Node.js program to demonstrate the   
// Process 'multipleResolves' Event 
  
// Importing process module 
const process = require('process'); 
  
// Event 'multipleResolves'  
process.on('multipleResolves', (type, promise, reason) => { 
  
   // Displaying the error  
   console.log("Type: ", type); 
   console.log("Promise: ", promise); 
   console.log("Reason: ", reason); 
}); 
  
const myFunction = async () => { 
   const data = await new Promise((resolve, reject) => { 
  
      // Calling reject after resolve 
      resolve('Single Resolve call'); 
      reject(new Error('Custom Reason')); 
   }); 
   return data 
} 
  
// Calling our function 
myFunction().then();

使用以下命令运行 index.js 文件:

node index.js

输出:

类型: 拒绝   
Promise对象: Promise { 'Single Resolve call' }   
原因: 错误: 自定义原因   
位置: data (C:\Users\Lenovo\Downloads\GeeksforGeeks\Node JS\index.js:19:14)   
位置: new Promise (<anonymous>)   
位置: myFunction (C:\Users\Lenovo\Downloads\GeeksforGeeks\Node JS\index.js:16:23)   
位置: Object.<anonymous> (C:\Users\Lenovo\Downloads\GeeksforGeeks\Node JS\index.js:25:1)   
位置: Module._compile (internal/modules/cjs/loader.js:1138:30)   
位置: Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)   
位置: Module.load (internal/modules/cjs/loader.js:986:32)   
位置: Function.Module._load (internal/modules/cjs/loader.js:879:14)   
位置: Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)   
位置: internal/main/run_main_module.js:17:47 

参考: https://nodejs.org/dist/latest-v16.x/docs/api/process.html#process_event_multipleresolves

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程