• 关于promise的用法


    promise是一个对象,里面保存着某个未来才会结束的事件,通常是一个异步事件。

    promise对象的两个特点:

    1.对象的状态不受外界影响:pending(进行中) fulfilled(已成功) rejected(已失败)
    只有异步操作的结果可以决定当前状态,其他任何操作都无法改变这个状态

    2.一旦状态改变发,就不会再变resolved(已定型),任何时候都可以得到这个结果。
    状态改变只有两种可能: pending ==> fulfilled
    pending ==> rejected
    promise缺点:
    1.一旦创建,无法中途取消
    2.promise内部的报错,不会反映到外部
    3.当处于pending状态时,不知道具体进展到哪一个阶段(刚刚开始还是即将完成)

    promise是一个构造函数,用来生成promise实例。

    promise构造函数接收函数作为参数,函数参数又接收两个函数作为参数

    promise实例后,可以用then方法指定resolved和rejected两个回调函数

    Promise.prototype.then() then方法是挂在Promise实例的原型链上,then返回的是一个新promise实例

    promise对象改变状态,若为resolved则调用then中的第一个函数,若为rejected则调用第二个函数

    const promise = new Promise(function (resolve, reject) {
    ......
    if(){
    resolve(value)
    }else {
    reject(error)
    }

    })

    promise.then(function(value){ }, function(error){ })

    Promise.prototype.catch() 可以捕获到promise内部的报错并向外部抛出异常,一般不用then()的第二个回掉函数,推荐使用catch()

    Promise.prototype.finally()
    不管状态如何,最后都会执行的操作;
    finally的回调函数不接受任何参数

    Promise.all()将多个 Promise 实例,包装成一个新的 Promise 实例。
    每个promise实例都为fulfilled时,新的promise状态才为fulfilled;
    只要有一个promise实例为rejected,新的promise状态就为rejected。

    Promise.race()将多个 Promise 实例,包装成一个新的 Promise 实例。

    Promise.resolve()将原有的对象返回一个新的 Promise 对象,状态为resolved

    Promise.reject()将原有的对象返回为一个新的 Promise 实例,该实例的状态为rejected

    Promise.try() 不管函数是同步的还是异步的,都用promise来处理函数,函数返回值是一个promise对象。

  • 相关阅读:
    maven打包出错: Failed to clean project: Failed to delete
    Image.Save()发生“GDI+ 中发生一般性错误”
    Vue.js——60分钟快速入门
    PHP-输入变量
    ThinkPHP框架开发的应用的标准执行流程
    ThinkPHP 3.2.2 在 volist 多重循环嵌套中使用 if 判断标签
    ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
    Namespace declaration statement has to be the very first statement in the script
    ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式
    ThinkPHP 3.2.3 简单后台模块开发(一)常用配置
  • 原文地址:https://www.cnblogs.com/surui/p/9071973.html
Copyright © 2020-2023  润新知