前言
艹艹艹都差不多写完了,莫名其妙的变成空白文档,没了……what fuck(黑人问号ing)
靠我干什么了?什么也没干啊我,泪奔。。。重写吧。
目的:知识总结,加深印象
注:本文中的知识点多是来自阮老师的ES6标准入门一书
定义
Promise 是异步编程的一种解决方案,比传统的解决方案,更合理和更强大。将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
总的来说就是一种新的编写(异步)代码的方式
缺点:
首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。
其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
用法
创建Promise实例
1 | const promise = new Promise(function(resolve, reject) { |
then()方法
1 | promise.then(function(value) { |
catch()方法
catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数。
1 | promise.then(function(value) { |
finally()方法
finally
方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。该方法是 ES2018 引入标准的。
1 | // 例子,服务器使用 Promise 处理请求,然后使用finally方法关掉服务器 |
all()方法
all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例
1 | const p = Promise.all([p1, p2, p3]) |
例子
1 | new Promise((resolve, reject) => { |
1 | Promise.resolve方法允许调用时不带参数,直接返回一个resolved状态的 Promise 对象。所以,如果希望得到一个 Promise 对象,比较方便的方法就是直接调用Promise.resolve方法 |