• JavaScript Promise


    在javascript中,Promise是一个对象,可确保将来(需要时)产生单个值。 javascript中的Promise用于管理和处理异步操作。

    JavaScript Promise作用

    到目前为止,我们了解了用于处理数据的事件和回调函数。但是,其范围是有限的。这是因为事件无法管理和操作异步操作。因此,Promise是有效处理异步操作的最简单,更好的方法。

    Promise和事件处理程序之间可能存在两个差异:

    Promise永远不会失败或成功两次或更多次。这只能发生一次。一个Promise既不能从成功变成失败,也不能从失败变成成功。如果Promise成功还是失败,并且过了一段时间,如果添加了任何成功/失败回调,则无论事件发生在何处,都将调用正确的回调。

    Promise的术语

    Promise可以以以下一种状态出现:

    pending:待处理的承诺尚未被拒绝或尚未实现。

    fulfilled:相关的诺言操作已成功完成。

    rejected:相关的诺言操作未能实现。

    settled:该操作已完成或被拒绝。

    因此,promise表示异步操作及其结果的完成。它可以是成功完成承诺,也可以是失败,但最终可以完成。 Promise使用 then(),仅在完成承诺解决后才执行。

    JavaScript Promise承诺:

    除非当前未完成js事件循环的执行(成功或失败),否则永远不会在其之前调用回调。即使存在带有then()的回调,但是只有在完全执行异步操作之后,才会调用它们。如果通过多次调用then()可以包含多个回调,则每个回调将按链执行,即按照插入的顺序一个接一个地执行。

    Promise中的方法

    Promise的功能几乎可以在所有流行的Web浏览器(例如Chrome,Mozilla,Opera等)上执行。方法列表为:

    方法名称摘要
    Promise.resolve(promise)仅当promise.constructor == Promise时,此方法才会返回promise。
    Promise.resolve(thenable)从thenable包含then()作出新的承诺。
    Promise.resolve(obj)做出对一个对象的承诺。
    Promise.reject(obj)对对象做出承诺拒绝。
    Promise.all(array)当数组中的每个项目都完成时做出承诺,或者在数组中的每个项目都没有完成时拒绝。
    Promise.race(array)如果数组中的任何项目被立即满足,它将解决承诺;或者,如果任何项目被立即拒绝,则将拒绝承诺。

    Promise中的构造函数

    构造函数说明
    new Promise(function(resolve, reject){});在这里,resolve(thenable)表示将使用then()解决承诺。
    Resolve(obj)表示将通过对象实现承诺。
    Reject(obj)表示被对象拒绝的承诺。

    Promise实现示例



    Javascript Promise







    在以上Promise实现中,Promise构造函数采用一个回调该函数的参数。该回调函数带有两个参数,即

    Resolve:成功执行诺言后,将调用resolve参数,从而提供结果。Reject::当承诺被拒绝时,将拒绝参数被调用,从而导致错误。

    这意味着要么调用了resolve要么拒绝了。在这里,then()接受了一个参数,如果承诺被解决,该参数将执行。否则,将在拒绝诺言的情况下调用catch()。

    使用Promises的优点

    处理异步操作的更好选择。

    提供简单的错误处理和更好的代码可读性。

  • 相关阅读:
    GitLab 管理 NuGet 包
    C++11重写muduo网络库3—Channel库(channel模块待补充完善)
    2023全国大学生电子设计竞赛H题全解 [原创www.cnblogs.com/helesheng]
    使用Java实现一个简单的贪吃蛇小游戏
    微服务 第三章 Spring Cloud 简介
    C语言题收录(三)
    Java工程师常见面试题集锦
    Vue.js+Node.js全栈开发教程:Vue.js数据冻结
    喜报|百华鞋业成功入选2022 年临沂市内外贸产品“三同”企业名单
    探索数字时代的核心:服务器如何塑造未来并助你成就大业
  • 原文地址:https://blog.csdn.net/xkdlzy/article/details/133570553