• Promise的基本用法


    目录

    一、概念

    二、特点 

    三、缺点

    四、基本使用

    1.promise封装定时器 

    2.promise封装Ajax

    五、async和await用法

    1.当函数返回的是一个非promise对象

    2.当函数返回的是一个promise对象 


    一、概念

    Promise是异步编程的一种解决方案,主要用来解决地狱回调的问题,可以有效的减少回调嵌套。通俗讲,Promise是一个许诺、承诺。是对未来事情的承诺,承诺不一定能完成,但是无论是否能完成都会有一个结果。

    • pending正在做……
    • resolved完成这个承诺
    • rejected这个承诺没有完成,失败了

     真正解决需要配合async/await。

    二、特点 

    1. 对象的状态不受外界影响,只有异步操作的结果可以决定对象的状态,任何其他操作都无法改变这个状态。
    2. 状态一但确定将无法改变。哪怕再对Promise对象添加回调函数,也会立即得到这个结果。 

    三、缺点

    1. 无法取消Promise,一旦新建它就会立即执行,无法中途取消。和一般的对象不一样,无需调用。 
    2. 如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
    3. 当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)

    四、基本使用

    1.promise封装定时器 

    2.promise封装Ajax

    五、async和await用法

    async是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。

    1.当函数返回的是一个非promise对象

    我们可以看到,当我们return的是一个非promise对象时,返回的是 promise对象。

    2.当函数返回的是一个promise对象 

     return的是promise对象,返回的promise对象与内部一致。


    await 也是一个修饰符,只能放在async定义的函数内。可以理解为等待。

    await 修饰的如果是Promise对象:可以获取Promise中返回的内容(resolve或reject的参数),且取到值后语句才会往下执行;

    如果不是Promise对象:把这个非promise的东西当做await表达式的结果。

    1. async function demo(){
    2. try{
    3. const a = 1;
    4. const b = await new Promise((resolve,reject)=>{
    5. setTimeout(()=>{
    6. console.log("promise执行了...");
    7. resolve("succ");//成的值
    8. },3000)
    9. })
    10. const c = 3;
    11. console.log(a,b,c);
    12. }catch(e){
    13. console.log(e);
    14. }
    15. }
    16. const MyPromise = demo();

     

    async作为一个关键字放在函数前面,表示该函数是一个异步函数,异步函数意味着该函数的执行不会阻塞后面代码的执行;而 await 用于等待一个异步方法执行完成;
    async/await的作用就是使异步操作以同步的方式去执行。

  • 相关阅读:
    HJ23 删除字符串中出现次数最少的字符
    算法设计与分析大师班
    cplex入门系列(二)--- 线性规划求解
    OAK相机:自动或手动设置相机参数
    MICCAI 2022:基于 MLP 的快速医学图像分割网络—UNeXt
    编写测试报告
    QML相关bug记录
    Python堆栈详细介绍
    Python顺序、条件和循环
    商标复审的流程和材料?
  • 原文地址:https://blog.csdn.net/m0_72383454/article/details/126815110