欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

node.js异步编程

程序员文章站 2022-07-01 10:42:05
...

参考文献:https://juejin.cn/post/6844903608882823176
Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用。node.js异步编程

promise

const myPromise = new Promise((resolve,reject) => {
	// ...some code
	if (/* 异步操作成功 */) {
		resolve(value)
	} else {
		reject(error)
	}
})

resolve作用:把promise对象的状态从「未完成pending」变为「成功resolved」,并把异步调用的结果,作为参数传递出去
reject作用:将promise对象的状态从「未完成pending」变为「失败rejected」,并将异步操作报出的错误,作为参数传递出去
Promise实例生成之后,可以用then方法分别指定resolved状态和rejected状态的回调函数,then方法的第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数

myPromise.then(value => {
	// success
}, error => {
	// failure
})

catch()

Promise.prototype.catch方法是.then(null,rejection)的别名

finally()

不管promise对象最后状态如何,都会执行的操作

promise
.then(result => {...})
.catch(error => {...})
.finally(() => {...})

Promise.all()

const p = Promise.all([p1,p2,p3])

p的状态由p1、p2、p3决定
(1)p1、p2、p3的状态都变为fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值构成一个数组,传递给p的回调函数
(2)p1、p2、p3中国有一个rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数

race()

const p = Promise.all([p1,p2,p3])

p1、p2、p3中有一个率先改变状态,p的状态就随之改变,其返回值就传递给p的回调函数

相关标签: node.js nodejs

上一篇: Node.js异步编程

下一篇: 安装 nvm