node.js异步编程
程序员文章站
2022-07-01 10:42:05
...
node.js异步编程
参考文献:https://juejin.cn/post/6844903608882823176
Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用。
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异步编程
下一篇: 安装 nvm