Ionic 3技术汇总

Promise实例

2018-07-21  本文已影响0人  IT飞牛

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
上一篇下一篇

猜你喜欢

热点阅读