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
浙公网安备 33010602011771号