Promise使用小结

32 篇文章 0 订阅
15 篇文章 0 订阅

1、是什么?

是一种机制,处理未来发生事件的流程。
Promise是异步执行机制,包含:

  1. 异步操作:在Promise构造函数里,一般是业务请求;
  2. 回调:
    1)通过resolve、reject对外开放了入口;使得回调操作不是内嵌,更像线性代码。
    2)通过then,执行异步成功的回调。

回头看 2022-07-06

当初的理解太侧重设计目的,没有认真理解代码形式。导致过段时间再看,只记得是回调|未来,忘了怎么使用。要再注意细节一些。如代码各部分的作用、流程图、增加例子。

用来解决嵌套回调的复杂性,同时增强了设计、明确了过程中的实体。

  1. executor:执行器,在创建promise实例时直接调用,一般是异步远程后端交互;
  2. 状态标记和结果传递:定制的函数resolve()、reject();
  3. 用线性代码的形式实现回调:p.then(resolved(),rejected())。

ps:回到回调的过程,有3个关键动作,在Promise中设计为了更明确实体。

回调动作Promise设计的实体
异步调用executor
异步调用结果判定resolve()、reject()
异步调用的数据resolve()、reject()
回调then(),线性呈现

Promise生命流程图

在这里插入图片描述

2、为什么?

1.“可以一定程度上解决回调地狱”
ps:一般场景下,回调地狱并不难理解,倒是promise的结构和用法给人的困惑更多。

3、如何用?

在这里插入图片描述

在这里插入图片描述

4、哪些场景?

基本使用

		const pp=new Promise((resolve,reject)=>{console.log("1 executor 立即执行")
											   setTimeout(()=>{console.log("2 executor 中的回调")
															   resolve(100)
															   },1000)
											   console.log("3 executor  立即执行")
											   })
		console.log(pp)
		setTimeout(()=>{
		  console.log(pp)
		},1500)

		pp.then((data)=>{console.log('pp.then:',data)})
		console.log('finish')

执行结果:
在这里插入图片描述

用setTimeout模拟异步请求,实现5秒钟打印一次的功能。

//直接写:几乎同时执行
setTimeout(function() {
  console.log('m1')
}, 5000)
setTimeout(function() {
  console.log('m2')
}, 5000)
setTimeout(function() {
  console.log('m3')
}, 5000)

//毁掉嵌套
setTimeout(function() {
  console.log(1)
  setTimeout(function() {
    console.log(2)
    setTimeout(function() {
      console.log(3)
    }, 5000)
  }, 5000)
}, 5000)  

//promise写法
let p118 = new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log(1);
    resolve()
  }, 5 * 1000)
})


p118.then(() => {
  //注意:
  //1.then的入参一定是个函数;
  //2.返回值是自定义的Promise1,控制了与外部的then返回promise状态。
  //3.自定义的Promise中再次回调,形成回调的回调。
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log(2);
      resolve()
    }, 5 * 1000)
  })
}).then(() => {
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log(3);
      resolve()
    }, 3 * 1000)
  })

5、Promise相关资料

  1. Promise面试题整理:
    通过考题,掌握重点,包括:
    1.Promise的构造函数是同步代码,一创建就执行;
    2.then()是回调函数。注意:仅当then的入参是函数时,如果是普通代码,则直接执行(变量洞穿?);
    3.promise的状态只能改一次;
    4.then、catch可以被多次调用。对比状态只能改一次。
    https://segmentfault.com/a/1190000021844647?utm_source=sf-related

  2. Promise入门详解和基本用法:https://www.cnblogs.com/qianguyihao/p/12660393.html

  3. Promise的进阶:async\await
    https://blog.csdn.net/major_zhang/article/details/79154287

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Promise是一种用于处理异步操作的JavaScript对象。它可以用于各种环境和情况下,以简洁和可读性高的方式处理异步任务。 在浏览器环境中,Promise常用于处理网络请求。我们可以使用XHR对象发送异步请求,并在其回调函数中创建Promise实例来处理请求的结果。在接收到响应后,Promise可以根据请求的成功或失败状态,执行相应的回调函数或捕获错误信息。 而在Node.js环境中,Promise也非常常见。Node.js中的许多操作都是异步的,比如读取文件、数据库查询等。使用Promise可以更方便地处理这些异步操作,并进行错误处理和结果传递。我们可以通过调用内置模块中的函数,创建Promise实例,然后使用Promise的方法链式调用来处理异步操作。 Promise还可以在前端框架(如React、Vue),以及后端框架(如Express、Koa)中使用。在前端框架中,Promise常用于管理数据的获取和页面渲染的顺序。在后端框架中,Promise常用于处理中间件和路由,以及数据库操作等异步任务。 总而言之,Promise可以在各种环境中使用。它的优势在于提供了一种更清晰、更可读的方法来处理异步任务。无论是浏览器、Node.js、前端框架还是后端框架,都可以方便地使用Promise来管理和处理异步操作。 ### 回答2: Promise 是一种在 JavaScript 中用于处理异步操作的解决方案。它可以让我们更方便地编写和组织代码,使得处理异步操作变得更加直观和可读。 Promise 可以用于任何需要进行异步操作的环境中,包括前端和后端开发。在前端开发中,常见的使用场景是处理网络请求。例如,在发送 AJAX 请求获取数据时,我们可以使用 Promise 对象来处理异步操作,以便在数据返回后进行相应的处理。Promise 还可以用于处理其他需要异步操作的场景,比如处理文件读取、定时器函数等。 在后端开发中,Promise 也广泛应用于处理数据库查询、文件读取、接口调用等需要异步操作的场景。使用 Promise 可以使异步代码更加易读和可维护,并且可以通过链式调用的方式更加方便地处理多个异步操作之间的依赖关系。 另外,Promise 不仅可以在浏览器环境和 Node.js 等服务器端环境中使用,还可以在各种支持 JavaScript 的平台中使用,比如移动端开发、桌面端应用程序等。 总结来说,Promise 可以在任何需要处理异步操作的环境中使用。无论是前端还是后端开发,它都能为我们提供一种统一的、简洁的方式来处理异步操作,提高代码的可读性和可维护性。 ### 回答3: promise使用环境主要是在异步编程中。在传统的JavaScript中,使用回调函数来处理异步操作,但由于回调函数存在嵌套、多层嵌套的情况,导致代码的可读性和可维护性差。而promise则能够通过链式调用的方式,更加清晰和优雅地处理异步操作。 promise在多种场景中都能得到广泛应用。首先,在前端开发中,当进行异步请求时,比如通过XMLHttpRequest或fetch获取数据信息,可以使用promise来进行处理。promise可以将异步操作包装成一个Promise对象,通过.then()方法来处理成功的回调和.catch()方法来处理失败的回调,使得代码更加简洁和易读。 其次,在多个异步操作有依赖关系的情况下,promise也能起到很大的作用。通过使用promise的.all()方法,可以将多个promise对象组合成一个新的promise对象,等待所有的异步操作都完成后再执行相应的操作。这在需要等待多个异步请求返回结果后再进行下一步操作时,十分方便和有效。 此外,promise还可以搭配async/await语法一起使用,以提供更加直观和简洁的异步编程方式。使用async修饰符来声明一个异步函数,在函数内部使用await关键字来等待promise的返回值,使得代码逻辑更加清晰和易于理解。 总之,promise是一种在异步编程中非常强大和实用的工具,它能够优化代码结构,改善代码的可读性和可维护性,提供了更加优雅和简洁的处理异步操作的方式。由于其广泛的应用场景和强大的功能,promise已经成为现代JavaScript开发中不可或缺的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值