# Prmise
> 英文释义: 承诺,约定.
- Promise 对象的状态不受外界影响(就英文意思一样是一种承诺,不会发生改变)。Promise 对象存在三种状态:pending(进行中)、fulfilled(已成功)和 reject(已失败),只有异步操作的结果,可以决定是哪一种状态,任何其他操作都无法发变这个状态。
- 一旦状态改变,就不会再变,任何时候都可以得到这个结果。
> 缺点: 1.无法取消 Promise,一旦新建它就会立即执行,无法中途取消
> 2.如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部 3.当处于 pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
**用途**
用于一个异步操作的最终完成(成功或失败)及其结果值的表示。简单来讲,就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作。
**注意:**
> 如果promise已到达resolve阶段,抛出错误是无效的.
**用法**
```javascript
let num = 12;
let promise = new Promise((resolve, reject) => {
console.log('Promise');
if (num > 10) {
reject(222);
} else {
resolve();
}
});
promise
.then(res => {
console.log('resolved.');
})
.catch(err => {
throw new Error('you can use reject arguments to set this error' + err);
});
console.log('Hi!');
/*
打印结果
1.Promise promise是立即执行的,后续结果为异步执行
2.Hi! 在异步then方法前执行
3.error~ ***** 响应异步错误
*/
// Promise 异步加载图片实例
function loadImageAsync(url) {
return new Promise((resolve, reject) => {
let image = new Image();
image.onload = () => {
resolve(image);
};
image.onerror = () => {
reject(new Error('Could not load image at ' + url));
};
image.src = url;
});
}
loadImageAsync('1.png').then(
value => {
console.log(value);
},
error => {
console.log('图片加载失败啦' + error);
}
)
//这里可以连写then方法 参数res从 上一个.then中返回
// .then(res => {
// })
```
> promise 另外还有 **all** **race**方法,这里不在进行赘述,仅作基本使用了解,使用时再细作研究.
- 01.let-const
- 02.对象数组解构&赋值
- 03.字符串扩展,数值扩展,数组扩展
- 04.数组扩展
- 05.对象扩展
- 06.06.Symbol原始数据类型
- 07.set数据结构
- 08.map数据结构
- 09.proxy与Reflect
- 10.类
- 11.Promise
- 12.Iterator(迭代器)
- 13.Generator(生成器)
- 14.module与模块化
- 15.es6学习总结
- 记录- Vue拖拽实例
- 记录-git使用天坑之分支切换
- node -- session & cookie & localStorge
- 18.12关于前端战略技术储备与问题反馈
- Vue组件通信方式总结以及遇到的问题
- 01.版本回溯以及文件修改
- 02.远端控制
- 03.分支管理
- node 入门 留言板
- nodejs模块与 commonjs 规范
- 19年技术发展规划
- JS错误处理 -> 提升程序健壮性
- Git 基本使用
- 18年年终总结