Promise笔记

基本API

1. Promise.resolve()

2. Promise.reject()

3. Promise.prototype.then()

4. Promise.prototype.catch()

5. Promise.all()

6. Promise.race()

介绍

Promise的构造函数接受一个参数,是函数,并且传入两个参数,resolve是将Promise的状态置为fullfiled,reject是将Promise状态置为rejected。

```

var promise = new Promise(reslove,reject){

    if(...){

        reslove(data)

    }else{

        reject(errorMsg)

    }

}

```

then和catch

then可以实现Promise的连续调用,catch作用相当与then方法的第二个参数,同时它能捕获异常并保证程序继续执行。

````

promise.then(function(response){

    //...

},function(reason,errorMsg){

    //...

})

.catch(function(reason){

    //...

})

````

all和race

all方法为所有的Promise执行完成之后的回掉,接收一个数组,并在resolve中返回一个数组。

race用法同all,race为竞速执行,只要有一个,以下为api的使用方法和简单的原理实现

```

var promiseAll = new Promise()

promiseALl.all([promise1,promise2,promise3])

.then(function(results){

    //...

})

promiseAll.race([]promise1,promise2,promise3)

.then(function(results){

    //...

})

```

实现原理:

```

Promise.all=function(promises){

    return  new Promise(function(resolve,reject){

        let  done=gen(promises.length,resolve);

        for(leti=0;i<promises.length;i++){

            promises[i].then(function(data){

                done(i,data);

            },reject);

        }

    });

}

Promise.race=function(promises){

    return  new  Promise(function(resolve,reject){

        for(leti=0;i<promises.length){

            promises[i].then(resolve,reject);

        }

    });

}

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。