咏竹莉
where there is a will,there is a way

Promise

ES6提供了Promise对象
Promise对象代表了未来将要发生的事情,用来传递异步操作的信息

promise对象有以下两个特点:

1.  对象的状态不受外界影响

promise对象的状态改变,只有两种可能,从pending到resolved和从pending到rejected(失败)

2. 一旦状态改变,将不会再变

 

promise 优缺点

有了promise可以异步将同步的流程表达出来,避免了层层嵌套的回调函数,使异步操作更简单


Promise缺点:

1. 无法取消promise,一旦新建它会立即执行,无法中途取消
2. 如果不设置回调函数,Promise内部抛出的错误,不会反应到外部
3. 当处于pending状态时,无法得知目前进展到哪个阶段

 

Promise创建:

要创建一个promise, 可以使用new来调用Promise进行实例化

var promise = new Promise(function(resolve, reject){
    // 异步处理
    // 处理结果后,调用resolve、reject
    
})    

 

实例:

var myFristPromise = new Promise(function(resolve,reject){
    // 异步代码执行成功,才调用resolve(...)  ,当代码执行失败调用reject(...)
    // 在本例中,我们使用setTimeout(...) 来模拟异步代码
    setTimeout(function(){
        resolve("成功")
    }, 1000)

})

 

promise.then() 是promise最常用的方法, 传递resolve和reject最为回调, promise.catch 方法: 捕获错误

 

promise.then(onFulfilled).catch(onRejected)

 

 

Promise.resolve 方法

 

有时需要将现有对象转为Promise对象,Promise.resolve 就起到这个作用

  

在图片上传校验尺寸中用了promise对象,详见上篇随笔

 详见: https://www.runoob.com/w3cnote/javascript-promise-object.html

posted on 2021-03-04 14:26  咏竹莉  阅读(67)  评论(0)    收藏  举报