Promise实例

作者: IT飞牛 | 来源:发表于2018-07-21 16:25 被阅读0次

    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
    

    相关文章

      网友评论

        本文标题:Promise实例

        本文链接:https://www.haomeiwen.com/subject/wcihmftx.html