前端 js 经典:Promise

简介: 前端 js 经典:Promise

1. 什么是 Promise

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大,它是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。

2. Promise 的用途

为了解决回调地狱问题

3. Promise 的用法

// 构造函数接收了一个函数作为参数,该函数就是Promise构造函数的回调函数。
// 该函数中有两个参数resolve和reject,这两个参数也分别是两个函数!
new Promise(function (resolve, reject) {
  // resolve 表示成功的回调
  // reject 表示失败的回调
})
  .then(function (res) {
    // 成功的函数
  })
  .catch(function (err) {
    // 失败的函数
  });
 
// or
let demo = new Promise((resolve, reject) => {
  let number = 10;
  setTimeout(() => {
    if (number >= 10) {
      resolve(number);
    } else {
      reject(1);
    }
  }, 1000);
});
demo
  .then((res) => {
    console.log("成功", res);
  })
  .catch((err) => {
    console.log("失败", err);
  });
 
// Promise.all() 接受多个promise的实例做为参数,参数必须是一个数组。
// promise都执行成功后,返回的是执行后的结果的一个数组,如果有一个失败了,返回的是第一个失败的返回值
let pro1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("pro1 success");
  }, 1000);
});
let pro2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("pro2 success");
  }, 2000);
});
let pro3 = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject("pro3 faild");
  }, 1000);
});
Promise.all([pro1, pro2]).then((res) => {
  console.log(res);
}); //  ['pro1 success', 'pro2 success']
Promise.all([pro1, pro3, pro2])
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log("faild", err);
  }); // faild pro3 faild
 
// Promise.race( ) 接受多个promise的实例做为参数,参数必须是一个数组。
// 其中一个promise完成时执行,返回结果是第一个完成的promise的返回数据
Promise.race([pro2, pro1]).then(res => {
    console.log(res)
}) // pro2 success


目录
相关文章
|
6天前
|
前端开发 JavaScript 数据处理
前端新手指南:如何解决JavaScript导出CSV文件不完整的问题
【6月更文挑战第4天】在JavaScript中处理CSV文件时,需要特别注意一些特殊字符,例如逗号、双引号、换行符等。这些字符可能会影响CSV文件的解析,导致数据错乱。
27 0
|
9天前
|
前端开发 数据安全/隐私保护
Uncaught (in promise) Error: Request failed with status code 404 at createError (createError.js:
Uncaught (in promise) Error: Request failed with status code 404 at createError (createError.js:
|
3天前
|
分布式计算 前端开发 JavaScript
【JavaScript】Promise与Async/Await:异步编程的艺术
【JavaScript】Promise与Async/Await:异步编程的艺术
11 0
|
3天前
|
前端开发 JavaScript 安全
高级前端开发需要知道的 25 个 JavaScript 单行代码
1. 不使用临时变量来交换变量的值 2. 对象解构,让数据访问更便捷 3. 浅克隆对象 4. 合并对象 5. 清理数组 6. 将 NodeList 转换为数组 7. 检查数组是否满足指定条件 8. 将文本复制到剪贴板 9. 删除数组重复项 10. 取两个数组的交集 11. 求数组元素的总和 12. 根据指定条件判断,是否给对象的属性赋值 13. 使用变量作为对象的键 14. 离线状态检查器 15. 离开页面弹出确认对话框 16. 对象数组,根据对象的某个key求对应值的总和 17. 将 url 问号后面的查询字符串转为对象 18. 将秒数转换为时间格式的字符串 19.
13 3
高级前端开发需要知道的 25 个 JavaScript 单行代码
|
4天前
|
前端开发 JavaScript 开发者
JavaScript中的异步编程:Promise与Async/Await
在现代前端开发中,JavaScript的异步编程变得越来越重要。本文将深入探讨JavaScript中的两种常见异步编程方式:Promise和Async/Await,并比较它们之间的优劣势,帮助读者更好地理解和运用这些技术。
|
6天前
|
XML 前端开发 JavaScript
前端简介(HTML+CSS+JS)
前端简介(HTML+CSS+JS)
|
6天前
|
JavaScript 前端开发 网络协议
前端JS发起的请求能暂停吗?
在讨论前端JS发起的请求是否能暂停时,需要明确两个概念:什么状态可以被认为是“暂停”?以及什么是JS发起的请求?
61 1
前端JS发起的请求能暂停吗?
|
9天前
|
前端开发 JavaScript 安全
TypeScript作为一种静态类型的JavaScript超集,其强大的类型系统和面向对象编程特性为微前端架构的实现提供了有力的支持
【6月更文挑战第11天】微前端架构借助TypeScript提升开发效率和代码可靠性。 TypeScript提供类型安全,防止微前端间通信出错;智能提示和自动补全加速跨代码库开发;重构支持简化代码更新。通过定义公共接口确保一致性,用TypeScript编写微前端以保证质量。集成到构建流程确保顺利构建打包。在微前端场景中,TypeScript是强有力的语言选择。
25 2
|
14天前
|
Web App开发 资源调度 JavaScript
【保姆级】前端使用node.js基础教程
【6月更文挑战第3天】Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境,用于服务器端编程。常用命令包括:安装 Node.js,通过 `node -v` 查看版本;使用 npm(Node 包管理器)进行初始化、安装/卸载包、查看版本和更新;运行 `.js` 脚本;使用 `node inspect` 调试;借助 nodemon 实现自动重启;通过 `npm list` 管理包;
6 0
|
17天前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
22 2