Promise 与异步编程(十 一)

// Promise
        
        // promise 相当于异步操作结果的占位符,它不会去订阅一个事件,也不会传递一个回调函数给目标函数
        // 而是让一个函数返回一个Promise
        
        // Promise的生命周期  先处于进行中(pending),
        // 当操作结束会处于   Fullfilled Promise异步操作完成
        //                    Rejected  由于程序的一些错误或一些其他原因,Promise
        //                         操作没有完成
        

        /*let promise = readFile("example.txt");

        promise.then(function(contents) {
            // 完成
            console.log(contents);
        }, function(err) {
            // 拒绝
            console.errot(err.message);
        })*/


        // 非Promise的Thenable对象
        /*let thenable = {
            then : function(resolve, reject) {
                resolve(42);
            }
        }

        let p1 = Promise.resolve(thenable);
        p1.then(function(value) {
            console.log(value); // 42
        })*/

        // Promise.resolve()调用的是thenable.then(),所以Promise的状态可以被检测到。
        // 由于是在then()方法内部调用了resolve(42),因此Thenable对象的Promise状态是
        // 完成的。新创建的已完成的状态Promise p1 从Thenable对象接受传入的值(也就是42),
        // p1的完成处理程序将42赋值给形参value

        
        /*let promise = new Promise(function(resolve, reject) {
            throw new Error("Explosion!");
        })

        promise.catch(function(error) {
            console.log(error.message)
        })*/


        // 串联Promise
        
        /*let p1 = new Promise(function(resolve, reject) {
            resolve(42);
        });

        p1.then(function(value) {
            console.log(value);
        }).then(function() {
            console.log("Finished");
        });*/


        // Promise链的返回值
        // 在拒绝处理程序中也可以做同样的事情

        /*p1.then(function(value) {
            console.log(value); // 42
            return value + 1;
        }).then(function(value) {
            console.log(value); // 43
        })*/

        // 在Promise中返回Promise
        /*let p2 = new Promise(function(resolve, reject) {
            resolve(43);
        });
        
        // 此时p1.then 返回的是另一个Promise
        p1.then(function(value) {
            // 第一个完成处理程序
            console.log(value);
            return p2;
        }).then(function(value) {
            // 第二个完成处理程序
            console.log(value); // 43
        })*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值