快速学习ES6新特性Promise之实例代码

(一)promise描述

一个promise是一个代理,它代表一个在创建promise时不一定已知的值。它允许你将处理程序与异步操作的最终成功值或失败原因关联起来。这使得异步方法可以像同步方法一样返回值,异步方法不会立即返回最终值,而是返回一个promise,以便在将来的某个时间点提供该值。

以下参考原文:Promise - JavaScript | MDN (mozilla.org)

promise有以下几个状态:

待定(pending):初始状态,没有被兑现,也没有被拒绝

已兑现(fulfilled): 操作成功

已拒绝(rejected):操作失败

快速学习ES6新特性Promise之实例代码_第1张图片

.then()方法最多接收两个参数,第一个参数是Promise兑现时的回调函数,第二个参数是Promise拒绝时的回调函数。每个.then()返回一个新生成的Promise对象,这个对象可被用于链式调用:

const myPromise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('foo')
    },300)
   })
   myPromise
   .then(handleFulfilledA,handleRejectedA)
   .then(handleFulfilledB,handleRejectedB)
   .then(handleFulfilledC,handleRejectedC)
   .catch(handleRejectedAny)

使用箭头函数作为回调函数

快速学习ES6新特性Promise之实例代码_第2张图片

 

 一个promise的终止条件决定了链中下一个promise的“已敲定”状态,“已兑现”状态表示Promise成功完成,而“已拒绝”状态表示Promise执行失败,链中每一个已兑现的Promise返回值会传递给下一个.then(),而已拒绝的Promise会把失败原因传递给下一个拒绝处理函数

后续继续更新:Promise() 构造函数 - JavaScript | MDN (mozilla.org)

(一)首先用setTimeout模拟一个异步请求,然后封装成一个new Promise

快速学习ES6新特性Promise之实例代码_第3张图片

 打印控制台  发现函数打印是promise

快速学习ES6新特性Promise之实例代码_第4张图片

 里面有catch  finally then

所以在我们调用createAudioFileAsync函数后就可以用.then链式调用

快速学习ES6新特性Promise之实例代码_第5张图片

快速学习ES6新特性Promise之实例代码_第6张图片

 (二) ECMAScript 2017 标准的 async/await 和new Promise

快速学习ES6新特性Promise之实例代码_第7张图片

打印出来:

快速学习ES6新特性Promise之实例代码_第9张图片

 后续继续更新.....

(四)基础示例

快速学习ES6新特性Promise之实例代码_第10张图片

参考代码:

// 基础示例
const myFirstPromise = new Promise((resolve, reject) => {
    // 当异步操作成功时,我们调用resove(...)
    // 当异步操作失败时,我们调用reject(...)
    // 在这里 我们用setTimeut(...)模拟异步代码
    setTimeout(() => {
        resolve('成功!')
    },1000);
});

myFirstPromise.then((successMessage) => {
    // successMessage是我们在上面的resolve(...)函数种传入的任何内容
    console.log(successMessage)
})

快速学习ES6新特性Promise之实例代码_第11张图片

快速学习ES6新特性Promise之实例代码_第12张图片

 快速学习ES6新特性Promise之实例代码_第13张图片

 (五)高级示例:

参考原文:

使用 Promise - JavaScript | MDN (mozilla.org)
Promise - JavaScript | MDN (mozilla.org)
 

你可能感兴趣的:(学习,前端,javascript)