promise用法

Promise笔记

1.promise构造函数

Promise是一个构造函数,传参是一个function(resolve,reject),resolve是异步执行成功的回调,reject是异步执行失败的回调。

//构建promise函数如下

//例1
var p = new Promise(function(resolve, reject){
    //做一些异步操作
    setTimeout(function(){
        resolve('success');
    }, 1000);
});


//例2
function executionFuc(){
    var p = new Promise(function(resolve, reject){
    //做一些异步操作
    setTimeout(function(){
        resolve('success');
    }, 1000);
    return p;
});
}

注意!!!以上例子只是new了对象,却会直接执行。为了避免直接执行,如例2所示,一般将该对象放在一个函数内

2.then跟catch的用法

var p = new Promise(function(resolve, reject){
    //做一些异步操作
    setTimeout(function(){
        resolve('success');
    }, 1000);
})
.then(function(data){
    console.log('resolved');
    console.log(data);
    console.log(weisingyi); //weisingyi未定义
})
.catch(function(reason){
    console.log('rejected');
    console.log(reason);
});

.then用来接收成功后的回调,对应resolve;

.then本身能接受两个参数,一个对应成功处理,一个对应失败处理,在执行resolve的回调时,如果代码出错,就会卡死不进入失败处理,所以建议使用.catch

.catch用来接收失败后的回调,对应reject;

3.all的用法

Promise
.all([promise1(), promise2()])
.then(function(datas){
    console.log(datas);
});

all方法传入数组参数,作用是多个异步并行执行,并且在所有异步操作执行完后才执行回调。返回的datas也将是一个数组,分别对应多个异步的返回数据。

4.race的用法

Promise
.race([promise1(), promise2()])
.then(function(datas){
    console.log(datas);
});

race与all相同,都是多个异步并行执行,但是race只返回第一个执行完的结果,后续其余异步将不再返回。例如用于超时跳出功能。

你可能感兴趣的:(promise用法)