美文网首页
promise的小结

promise的小结

作者: Young_Kind | 来源:发表于2018-05-11 01:16 被阅读5次
声明一个Promise对象
// 方法1
let promise = new Promise ( (resolve, reject) => {
    if ( success ) {
        resolve(a) // pending ——> resolved 参数将传递给对应的回调方法
    } else {
        reject(err) // pending ——> rejectd
    }
} )

//或方法2
function promise () {
    return new Promise ( function (resolve, reject) {
        if ( success ) {
            resolve(a)
        } else {
            reject(err)
        }
    } )
}
Promise.prototype.then() 和 Promise.prototype.catch()

then()方法使Promise原型链上的方法,它包含两个参数方法,分别是已成功resolved的回调和已失败rejected的回调

promise.then(
    () => { console.log('成功的回调') },
    () => { console.log('出错的回调') }
)

.catch()的作用是捕获Promise的错误,与then()的rejected回调作用几乎一致。但是由于Promise的抛错具有冒泡性质,能够不断传递,这样就能够在下一个catch()中统一处理这些错误。同时catch()也能够捕获then()中抛出的错误,所以建议不要使用then()的rejected回调,而是统一使用catch()来处理错误。

下面看一个例子

           function runAsync1() {
                return new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function (str) {
                        console.log(str + '执行完成');
                        resolve()
                    }, 1000, '异步任务1');
                })
            }

            function runAsync2() {
                return new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function (str) {
                        console.log(str + '执行完成');
                        //下面2句只会执行一句,谁先谁执行
                        reject('异步任务2')
                        resolve()
                    }, 1000, '异步任务2');
                })
            }

            function runAsync3() {
                return new Promise(function (resolve, reject) {
                    //做一些异步操作
                    setTimeout(function (str) {
                        console.log(str + '执行完成');
                    }, 1000, '异步任务3');
                })
            }

            runAsync1()
                .then(function (res) {
                    return runAsync2()
                },function (reason) {
                    console.log(reason,'捕捉出错1')
                })
                .then(function (res) {
                    return runAsync3()
                },function (reason) {
                    console.log(reason,'捕捉出错2')
                })
                .catch(function (reason) {
                    console.log(reason,'最后捕捉出错')
            })

看看打印的结果就知道Promise链式写法的好处了。
特别是在处理第三方登录,比如获取微信登录信息的时候,需要好几个流程的异步处理。

相关文章

  • promise的小结

    声明一个Promise对象 Promise.prototype.then() 和 Promise.prototyp...

  • Promise小结

    Primise 总结 js 回调 同步回调func add(a,b,func){ func(a+b)};cons...

  • promise小结

    很早之前就听说过promise了,但是一直没有时间深入研究。这两天有时间看了一下,下面就我自己的理解整理一下pro...

  • Promise小结

    Promise 1、怎么使用Promise 任务成功调用 resolve(result)任务失败调用 reject...

  • Promise 用法小结

    https://blog.csdn.net/qq_34645412/article/details/81170576

  • Promise用法小结

    Promise 的含义 Promise对象有以下两个特点 :(1)对象的状态不受外界影响。Promise对象代表一...

  • Promise基础分析小结

    Promise最基础分析与理解 同步与异步同步是当发起一个请求后,如果未得到结果,会一直等待,知道结果出现;异步是...

  • iOS Promise学习小结

    一、Promise概述 1、为什么引入Promise 在日常开发中,异步操作是很常见的情况,比如发起网络请求后,处...

  • 8.NodeJs之小白初识promise

    Promise入门级介绍 本文是观看了慕课网上的进击的NodeJs(二)后写的小结,感谢Scott老师 本文只为了...

  • ES6 promise 用法小结

    ES6 promise 用法小结 Js 是一⻔单线程语言,早期解决异步问题,大部分是通过回调函数进行。 比如我们发...

网友评论

      本文标题:promise的小结

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