iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何理解JavaScript中的Promise
  • 308
分享到

如何理解JavaScript中的Promise

2024-04-02 19:04:59 308人浏览 安东尼
摘要

如何理解javascript中的Promise,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。pr

如何理解javascript中的Promise,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

promise 是一个 es6 的语法

Promise表示承诺的意思,它在语法上解决了传统的多层回调嵌套问题

回调函数

· 什么是回调函数?

· 就是把函数 A 当作参数传递到 函数 B 中

· 在函数 B 中以行参的方式进行调用

function a(cb) {

    cb()}function b() {

    console.log('我是函数 b')}a(b)

· 为什么需要回调函数

· 当我们执行一个异步的行为的时候,我们需要在一个异步行为执行完毕之后做一些事情

· 那么,我们是没有办法提前预知这个异步行为是什么时候完成的

· 我们就只能以回调函数的形式来进行

一个典型的定时器

setTimeout(function(){

    console.log("回调函数执行了")}, 2000)

回调地狱

· 当一个回调函数嵌套一个回调函数的时候

· 就会出现一个嵌套结构

· 当嵌套的多了就会出现回调地狱的情况

· 比如我们发送三个 ajax 请求

· 第一个正常发送

· 第二个请求需要第一个请求的结果中的某一个值作为参数

· 第三个请求需要第二个请求的结果中的某一个值作为参数

ajax({

  url: '我是第一个请求',

  success (res) {

    // 现在发送第二个请求    ajax({

      url: '我是第二个请求',

      data: { a: res.a, b: res.b },

      success (res2) {

        // 进行第三个请求        ajax({

          url: '我是第三个请求',

          data: { a: res2.a, b: res2.b },

   success (res3) { 

            console.log(res3) 

          }

        })

      }

    })

  }})

· 回调地狱,其实就是回调函数嵌套过多导致的

· 当代码成为这个结构以后,已经没有维护的可能了

· 所以我们要把代码写的更加的艺术一些

PROMISE

· 为了解决回调地狱

· 我们就要使用 promise 语法

· 语法:

new Promise(function (resolve, reject) {

    // resolve 表示成功的回调    // reject 表示失败的回调}).then(function (res) {

    // 成功的函数}).catch(function (err) {

    // 失败的函数})

· promise 就是一个语法

· 我们的每一个异步事件,在执行的时候

· 都会有三个状态,执行中 / 成功 / 失败

· 因为它包含了成功的回调函数

· 所以我们就可以使用 promise 来解决多个 ajax 发送的问题

new Promise(function (resolve, reject) {

    ajax({

        url: '第一个请求',

        success (res) {

            resolve(res)

        }

    })}).then(function (res) {

    // 准备发送第二个请求    return new Promise(function (resolve, reject) {

        ajax({

            url: '第二个请求',

            data: { a: res.a, b: res.b },

            success (res) {

                resolve(res)

            }

        })

    })}).then(function (res) {

    ajax({

        url: '第三个请求',

        data: { a: res.a, b: res.b },

        success (res) {

            console.log(res)

        }

    })})

· 这个时候,我们的代码已经改观了很多了

· 基本已经可以维护了

· 但是对于一个程序员来说,这个样子是不够的

· 我们还需要更加的简化代码

· 所以我们就需要用到一个 es7 的语法了

· 叫做 async/await

ASYNC/AWAIT

· async/await 是一个 es7 的语法

· 这个语法是 回调地狱的终极解决方案

· 语法:

async function fn() {

    const res = await promise对象}

· 这个是一个特殊的函数方式

· 可以 await 一个 promise 对象

· 可以把异步代码写的看起来像同步代码

· 只要是一个 promiser 对象,那么我们就可以使用 async/await 来书写

async function fn() {

  const res = new Promise(function (resolve, reject) {

    ajax({

        url: '第一个地址',

        success (res) {

            resolve(res)

        }

    })

  })

  // res 就可以得到请求的结果  const res2 = new Promise(function (resolve, reject) {

    ajax({

        url: '第二个地址',

        data: { a: res.a, b: res.b },

        success (res) {

            resolve(res)

        }

    })

  })

  const res3 = new Promise(function (resolve, reject) {

    ajax({

      url: '第三个地址',

      data: { a: res2.a, b: res2.b },

      success (res) {

        resolve(res)

      }

    })

  })

  // res3 就是我们要的结果  console.log(res3)}

· 这样的异步代码写的就看起来像一个同步代码了

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网node.js频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何理解JavaScript中的Promise

本文链接: https://www.lsjlt.com/news/82475.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解JavaScript中的Promise
    如何理解JavaScript中的Promise,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。pr...
    99+
    2024-04-02
  • JavaScript中的Promise详解
    目录Promise的基本用法:1、创建Promise对象2、Promise 方法总结Promise是异步编程的一种解决方案,是一个对象,可以获取异步操作的消息,大大改善了异步编程的困...
    99+
    2024-04-02
  • JavaScript中的Promise如何使用
    这篇文章主要介绍了JavaScript中的Promise如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript中的Promise如何使用文章都会有所收获,下面我们一起来看看吧。Promise...
    99+
    2023-06-30
  • 如何理解Promise
    这篇文章主要介绍“如何理解Promise”,在日常操作中,相信很多人在如何理解Promise问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Promise”的疑惑有所帮...
    99+
    2024-04-02
  • JavaScript中Promise如何使用
    JavaScript中Promise如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.什么是 Promisepromise 是目前...
    99+
    2024-04-02
  • JavaScript中Promise的原理是什么及如何使用
    这篇文章主要介绍了JavaScript中Promise的原理是什么及如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript中Promise的原理是什么及如何使用文章都会有所收获,下面我们一起...
    99+
    2023-07-05
  • JavaScript中Promise如何处理异步的并行与串行
    这篇“JavaScript中Promise如何处理异步的并行与串行”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaSc...
    99+
    2023-07-04
  • javascript中Promise使用详解
    目录一、首先,要知道为什么要用Promise语法?二、接着,来了解一下回调地狱(Callback Hell)三、最后,也是本章的重头戏,Promise的基本使用(一) resolve...
    99+
    2024-04-02
  • javascript中Promise原理是什么
    本篇内容主要讲解“javascript中Promise原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中Promise原理是什么”吧...
    99+
    2024-04-02
  • JavaScript中Promise的简单使用及其原理详解
    Promise是ES6最重要的特性之一,今天来系统且细致的研究一下Promise的用法以及原理。 按照我往常的理解,Promise是一个构造函数,有all、resolve、rejec...
    99+
    2023-03-23
    JavaScript Promise原理 JavaScript Promise使用 JavaScript Promise
  • JavaScript中Promise的执行顺序详解
    目录前言代码分析then 方法何时调用?总结前言 最近看到一个 Promise 相关的很有意思的代码: new Promise((resolve) => { console...
    99+
    2024-04-02
  • JavaScript Promise执行流程深刻理解
    目录手撕Promise看完收获Promise分析作用特点总体实现resolve和reject初步实现then方法的实现Promise.all的实现手撕Promise 手写一个Prom...
    99+
    2024-04-02
  • 怎么理解Promise中的core.js
    这篇文章主要讲解了“怎么理解Promise中的core.js”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Promise中的core.js”吧!源码...
    99+
    2024-04-02
  • 详解JavaScript中Promise类的使用方法
    目录1. all 2.  allSettled3.  race4. any 这篇主要讲一下Promise的类方法的基本使用...
    99+
    2023-05-19
    JavaScript Promise类使用 JavaScript Promise类
  • 深入学习JavaScript中的promise
    目录为什么要用Promise?使用Promise解决异步控制问题Promise的结构回调函数为什么异步代码一定是回调函数结构?刨析Promise原型方法——c...
    99+
    2024-04-02
  • javascript中的糖衣语法Promise对象详解
    目录一、Promise的诞生1、回调地狱二、Promise的行为1、Promise的语法2、Promise的方法(1)Promise.prototype.then()(2)Promi...
    99+
    2024-04-02
  • javascript中的Promise怎么使用
    这篇“javascript中的Promise怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“javascript中的P...
    99+
    2023-06-30
  • 如何理解JavaScript中的Generators
    如何理解JavaScript中的Generators,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 JavaS...
    99+
    2024-04-02
  • 如何理解JavaScript中的jQuery
    这篇文章给大家介绍如何理解JavaScript中的jQuery,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。元素操作· 创建一个元素var div =&n...
    99+
    2024-04-02
  • 如何理解JavaScript中的CSP
    如何理解JavaScript中的CSP,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Communicating Sequential Pr...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作