🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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**方法,这里不在进行赘述,仅作基本使用了解,使用时再细作研究.