编辑
2023-03-23
ES6
0
请注意,本文编写于 534 天前,最后修改于 515 天前,其中某些信息可能已经过时。

目录

说明
特点
语法
说明
注意点
Eg
注意
promise.catch()
async函数
说明
语法

说明

Promise是一个容器,保存了某个未来才会结束的事件(通常是一个异步操作)的结果;可以获取异步操作的消息

特点

  1. 不受外界影响,
  2. Promise对象代表一个异步操作,有三种状态:
  • pending(进行中)
  • fulfilled(已成功)
  • rejected(已失败)
    只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
  1. 一旦状态改变,就不会再变。Promise对象的状态改变,只有两种可能:
  • 从pending变为fulfilled
  • 从pending变为rejected

语法

说明

默认处于pending状态,只有通过fulfilled或rejected改变其状态后then中代码才会执行

const promise = new Promise(function(resolve, reject) { // ... 异步操作 //异步操作结果通过resolve向外传递 resolve(value);//成功时传递 reject(error);//失败时传递 }); promise.then(function(res){ // success }, function(error) { // failure });

注意点

then可以链式调用,接受两个回调函数作为参数。
第一个回调函数是Promise对象的状态变为resolved时调用
第二个回调函数是Promise对象的状态变为rejected时调用
这两个函数都是可选的,不一定要提供
都接受Promise对象传出的值作为参数

Eg

promise
此时输出结果为: 1,3,2,4
原因:第一个promise保证了alert(1)首先执行,但是then()中的语句并没有promise保证则会按照定时器顺序执行
promise-change

注意

通过返回一个promise对象再对其使用then,则then中语句会等待前面语句执行完后,再由前一个promise对象状态变为resolve(或reject)时再执行。若前一个状态没有改变则后续不会执行

promise.catch()

Promise.prototype.catch()方法是.then(null, rejection)或.then(undefined,rejection)的别名,用于指定发生错误时的回调函数

promise.then(function(res){ // some code // reject(err) 改变其状态为reject }).catch(function(err){ //错误处理语句 })

async函数

说明

async声明函数后表示该函数内包含异步操作,async用于声明一个函数是异步,await用于等待一个异步执行完成

async函数会返回一个promise对象,若在函数中return一个值,则该值会通过Promise.resolve()方法传递出去

若没有resolve则默认resolve一个undefined

语法

await等待一个结果,结果可以是一个表达式,表达式计算的结果是promise对象或其它值

async function() { await 等待一个结果(promise对象) }

Eg
async

本文作者:RKLS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!