用Promise对象实现Javascript异步操作,简单好用

在Javascript、TypeScript等脚本程序中,除了用最笨重的原生方式来实现异步操作(请点击 这里 查看它的具体实现方法)之外,是否还有其他方式呢?答案是肯定的,当然可以用Promise许诺对象来实现。

Promise,顾名思义,是许诺之意,用来处理异步操作的对象方法。它可以让我们写异步调用脚步代码时候,代码写得更加优雅、更加美观、更加简单。Promise许诺之后,它肯定会给一个答复,要么成功答复,要么失败答复。当然,可能会出现Promise代码没有任何答复情况,这时程序处于一致处于等待状态即未知,因此,书写Promise代码一定要让程序任何执行分支都有一个答复,不论是成功答复还是失败答复,如此一来程序是健壮可靠的。

Promise 是一个脚本对象,通常描述现在优先执行但一段时间后才能知道结果的行为场景实现,它的内部保存这个异步行为的结果。它有三种状态,分别是:

1. pending:待定
2. resolved:解决
3. rejected:拒绝

还有两种状态转换过程,如下:

1. pending 到 resolved
2. pending 到 rejected

先来创建一个最简单的空的Promise对象代码,如下:

new Promise((resolve, reject) => {
  
});

许诺Promise对象有两种结果状态,要么成功答复,要么失败答复,分别如下:

1. 成功答复

new Promise((resolve, reject) => {
  resolve(1);
});

2.失败答复

new Promise((resolve, reject) => {
  reject(0);
});

上面是有了明确的答复,但是没有依据答复结果而做相应的响应处理逻辑。那么,我们需继续添加上响应处理逻辑,如下:

1.成功答复

new Promise((resolve, reject) => {
  resolve(1);
}).then((res)=>{
  console.info("resolved: "+res);
},(err)=>{
  console.error("rejected: "+err);
});

执行结果是resolved: 1

2.失败答复

new Promise((resolve, reject) => {
  reject(0);
}).then((res)=>{
  console.info("resolved: "+res);
},(err)=>{
  console.error("rejected: "+err);
});

执行结果是rejected: 0

大家看看,这样写异步操作的脚本代码是不是很帅,代码非常简洁。当然,还可另外一种方式写出响应处理函数,如下:

1.成功答复

function onResolved(res){
  console.info("resolved: "+res);
}
function onRejected(err){
  console.info("rejected: "+err);
}

new Promise((resolve, reject) => {
  resolve(1);
}).then(onResolved,onRejected);

执行结果是resolved: 1

2.失败答复

function onResolved(res){
  console.info("resolved: "+res);
}
function onRejected(err){
  console.info("rejected: "+err);
}

new Promise((resolve, reject) => {
  reject(0);
}).then(onResolved,onRejected);

执行结果是rejected: 0

总而言之,不管哪种方式书写响应处理函数,用许诺Promise对象来实现脚本异步操作逻辑是非常方便的,推荐使用。

原文来自码嗨路书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值