Promise实例

Promise 的含义

Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了语法,原生提供了Promise
所谓Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。
Promise 对象的状态不受外界影响

三种状态:

pending:进行中
fulfilled :已经成功
rejected 已经失败

状态改变:
Promise对象的状态改变,只有两种可能:

从pending变为fulfilled
从pending变为rejected。

这两种情况只要发生,状态就凝固了,不会再变了,这时就称为resolved(已定型)

Promise还可以做更多的事情,比如,有若干个异步任务,需要先做任务1,如果成功后再做任务2,任何任务失败则不再继续并执行错误处理函数。要串行执行这样的异步任务,不用Promise需要写一层一层的嵌套代码。有了Promise,我们只需要简单地写:

job1.then(job2).then(job3).catch(handleError);

更多实例,见:http://jstest.6feel.com/demo/40/

实例1:

new Promise(function(r,j){
setTimeout(function(){r("你好")},1000);    //定义后,里面开始倒计时1秒,调用下个then,传入参数"你好"
})
.then((value=>{console.log(value);//打印出"你好"
    return new Promise(function(r,j){
        setTimeout(function(){r("你不好1")},1000)//定义后,里面开始倒计时1秒,调用下个then,传入参数"你好"
    })
}))
.then((value=>{console.log(value);//打印出"你好"
    return new Promise(function(r,j){
        setTimeout(function(){r("你不好2")},1000)//定义后,里面开始倒计时1秒,调用下个then,传入参数"你好"
    })
}))
.then((value=>{console.log(value);//打印出"你好"
    return new Promise(function(r,j){
        setTimeout(function(){r("你不好3")},1000)//定义后,里面开始倒计时1秒,调用下个then,传入参数"你好"
    })
}))
.then((value=>{console.log(value);//打印出"你好"
    return new Promise(function(r,j){
        setTimeout(function(){r("你不好4")},1000)//定义后,里面开始倒计时1秒,调用下个then,传入参数"你好"
    })
}))
.then((value=>{console.log(value)}))//打印出"你好"

//输入以下内容:
//你好
//你不好1
//你不好2
//你不好3
//你不好4

实例二

new Promise(function(r,j){
setTimeout(function(){r("你好")},1000);
})
.then((value=>{
    console.log(value);
}))
.then((value=>{
    console.log(1);
}))
.then((value=>{
    console.log(2);
}))
.then((value=>{
    console.log(3);
}))
//输出:
//你好
//1
//2
//3

实例3

new Promise(function(r,j){
    r(1)
})
.then((value=>{
    console.log(value);
    return value+1
}))
.then((value=>{
    console.log(value);
    return value+1;
}))
.then((value=>{
    console.log(3);
    return value+1
}))
//输出:
//1
//2
//3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT飞牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值