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的回调函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值