初识Promise

目的: Promise 是书写异步代码的另一种方式, 解决回调函数嵌套的问题(回调地狱)

基本语法

创建Promise对象

new Promise的时候会执行传入的函数

//Promise对象传入一个函数,函数提供两个函数参数resolve、reject
const promise = new Promise((resolve, reject) => {
  // 内部封装一个异步操作

  // 成功则调用resolve

  // 失败调用reject
})

使用

promise.then((res) => { ... }).catch((err) => { ... })

Promise是一个构造函数

Promise.prototype上包含then()catch()方法

通过then方法来指定成功的回调函数

通过catch方法来指定失败的回调函数

Promise的三种状态

  • pending: 待定(等待结果
  • fulfilled: 成功 (已兑现), 调用了 resolve, Promise的状态就会被标记成成功
  • rejected: 失败 (已拒绝), 调用了 reject, Promise的状态就会被标记成失败

一旦Promise的状态发生变化,状态就不会再改变了!就像他的名字Promise一样,承诺了就不会改变。

Promise链式调用

解决回调地狱的问题

因为 Promise.prototype.thenPromise.prototype.catch 方法返回的是 promise,只要是 promise 对象都有这两个方法,所以它们可以被链式调用。

import fs from 'then-fs'

fs.readFile('1.txt', 'utf-8').then(res => {
  console.log('读取成功:' + res);
  return fs.readFile('2.txt', 'utf-8')
}).then((res) => {
  console.log('读取成功:' + res);
  return fs.readFile('3.txt', 'utf-8')
}).then((res) => {
  console.log('读取成功:' + res);
}).catch(err => {
  console.log('读取失败:' + err);
})

已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注