Evan's blog Evan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)

conanan

真相只有一个
首页
关于
  • 分类
  • 标签
  • 归档
  • H5&CSS3
  • JS
  • TS
  • Node
  • Webpack
  • Vue2
  • Vue3
  • 微信小程序
  • Andorid
  • Flutter
推荐
GitHub (opens new window)
  • 入门

  • 理解

  • 语法

  • 异步

    • 6 异步-1 定时器
    • 6 异步-2 Promise
      • 使用
      • 多个 Promise 同时执行
    • 6 异步-3 async & await
  • 模块化

  • 网络

  • DOM&BOM

  • 常用框架

  • JS
  • 异步
xugaoyi
1984-01-24
目录

6 异步-2 Promise

# Promise

# 使用

// 每次调用 Promise 的方法后,会返回 Promise 对象,可以链式调用
var promise = new Promise((resolve, reject) => {
  // 模拟耗时操作
  setTimeout(() => {
    resolve("1 执行成功,返回结果");
  }, 2000);
})
  .then(res => {
    console.log(res); // 1 执行成功,返回结果
    // 也可返回对 res 操作后的值
    return "2 执行成功,返回结果";
  })
  .then(res => {
    console.log(res); // 2 执行成功,返回结果
    return new Promise((resolve, reject) => {
      resolve("3 执行成功,返回结果");
    });
  })
  .then(res => {
    console.log(res); // 3 执行成功,返回结果
    throw new Error("1 执行失败,返回失败信息");
  })
  .catch(error => {
    console.log(error); // Error: 执行失败,返回失败信息
    throw "2 执行失败,返回失败信息";
  });
// 后面哈可以继续 then、catch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 多个 Promise 同时执行

var p1 = new Promise(resolve => {
  setTimeout(() => {
    console.log("p1");
    resolve(1);
  }, 1000);
});

var p2 = new Promise(resolve => {
  setTimeout(() => {
    console.log("p2");
    resolve(2);
  }, 2000);
});

var p3 = new Promise(resolve => {
  setTimeout(() => {
    console.log("p3");
    resolve(3);
  }, 500);
});

Promise.all([p1, p2, p3]).then(values => {
  let [v1, v2, v3] = values;
  console.log(v1, v2, v3); // 1 2 3
});

// 最终返回:
// p3
// p1
// p2
// 1 2 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
编辑 (opens new window)
上次更新: 2022/03/23, 17:55:39
6 异步-1 定时器
6 异步-3 async & await

← 6 异步-1 定时器 6 异步-3 async & await→

最近更新
01
重点
04-12
02
搭建项目
04-04
03
TS补充
03-30
更多文章>
Theme by Vdoing | Copyright © 2019-2022 conanan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式