winscp怎么做网站,沧州高端网站制作,开网站制作公司,WordPress文件管理有图片Promise 是异步编程的一种解决方案#xff0c;比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现#xff0c;ES6 将其写进了语言标准#xff0c;统一了用法#xff0c;原生提供了 Promise 对象。 Promise 对象有以下两个特点。 对象的状态不受… Promise 是异步编程的一种解决方案比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现ES6 将其写进了语言标准统一了用法原生提供了 Promise 对象。 Promise 对象有以下两个特点。 对象的状态不受外界影响。 Promise 对象代表一个异步操作有三种状态pending进行中、fulfilled已成功和rejected已失败。只有异步操作的结果可以决定当前是哪一种状态任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来它的英语意思就是“承诺”表示其他手段无法改变。 一旦状态改变就不会再变任何时候都可以得到这个结果。 Promise 对象的状态改变只有两种可能从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生状态就凝固了不会再变了会一直保持这个结果这时就称为 resolved已定型。如果改变已经发生了你再对 Promise 对象添加回调函数也会立即得到这个结果。这与事件Event完全不同事件的特点是如果你错过了它再去监听是得不到结果的。
Promise 有几种静态方法和实例方法。
静态方法
Promise.resolve(value): 返回一个以给定值解析为成功的 Promise 对象。Promise.reject(reason): 返回一个由于给定原因而拒绝的 Promise 对象。Promise.all(iterable): 接收一个可迭代对象所有输入的 promise 都成功时返回一个 promise其结果为一个数组包含所有输入 promise 的结果。如果任何一个输入 promise 失败则立即拒绝。Promise.race(iterable): 接收一个可迭代对象一旦其中一个 promise 解决或拒绝就返回一个 promise其结果或拒绝理由与第一个解决或拒绝的 promise 相同。Promise.allSettled(iterable): 接收一个可迭代对象等待所有的 promise 都完成无论是解决还是拒绝然后返回一个 promise其结果为一个数组包含每个 promise 的状态。
实例方法Promise.prototype
.then(onFulfilled, onRejected): 注册当 promise 解决或拒绝时的回调函数。onFulfilled 在 promise 成功时调用onRejected 在 promise 失败时调用。返回一个新的 promise。.catch(onRejected): 添加一个处理 promise 失败情况的回调函数。返回一个新的 promise。.finally(onFinally): 注册一个在 promise 完成无论成功或失败后执行的回调函数。返回一个新的 promise。
用例
// 使用 Promise.resolve 创建一个成功的 promise
let resolvedPromise Promise.resolve(Success);// 使用 Promise.reject 创建一个失败的 promise
let rejectedPromise Promise.reject(Failure);// 使用 Promise.all 等待多个 promise 完成
Promise.all([resolvedPromise, rejectedPromise]).then(results console.log(results)).catch(error console.error(error));// 使用 Promise.race 等待最快完成的 promise
Promise.race([resolvedPromise, rejectedPromise]).then(value console.log(value)).catch(error console.error(error));// 使用 Promise.allSettled 等待所有 promise 完成不论成功或失败
Promise.allSettled([resolvedPromise, rejectedPromise]).then(results console.log(results)); // 输出每个 promise 的状态// 使用 Promise.prototype.then 注册回调
let promise new Promise((resolve, reject) {resolve(Done);
});
promise.then(value {console.log(value); // 输出Done
});// 使用 Promise.prototype.catch 处理错误
promise.then(() {throw new Error(An error occurred);
}).catch(error {console.error(error.message); // 输出An error occurred
});// 使用 Promise.prototype.finally 注册最终回调
promise.finally(() {console.log(This is the final step.);
});