热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript的回调地狱与Promis对象(asyncawait)

1.我想先吃火锅再喝奶茶然后看电影、蹦迪、洗澡,这样写的代码看着像陀翔functiongetTea(fn){setTimeout((){fn(奶茶

1.我想先吃火锅再喝奶茶然后看电影、蹦迪、洗澡,这样写的代码看着像陀翔

<script>function getTea(fn) {setTimeout(() &#61;> {fn("奶茶")}, 500);}function getHotpot(fn) {setTimeout(() &#61;> {fn("火锅")}, 800);}function getFilm(fn) {setTimeout(() &#61;> {fn("看电影")}, 2000);}function getKTV(fn) {setTimeout(() &#61;> {fn("KTV")}, 1000);}function getBath(fn) {setTimeout(() &#61;> {fn("洗澡")}, 3000);}getHotpot(function (data) {//吃火锅console.log(data);getTea(function (data) {//喝奶茶console.log(data);getFilm(function (data) {//看电影console.log(data);getKTV(function (data) {//去蹦迪console.log(data);getBath(function (data) {//去洗澡console.log(data);})})})})})</script>

在这里插入图片描述
2.用Promise写是不是看着更舒服点

function getTea() {return new Promise(function (resolve) {setTimeout(() &#61;> {resolve("奶茶")}, 500);})}function getHotpot() {return new Promise(function (resolve) {setTimeout(() &#61;> {resolve("火锅")}, 800);})}function getFilm() {return new Promise(function (resolve) {setTimeout(() &#61;> {resolve("看电影")}, 1000);})}function getKTV() {return new Promise(function (resolve) {setTimeout(() &#61;> {resolve("KTV")}, 1500);})}function getBath() {return new Promise(function (resolve) {setTimeout(() &#61;> {resolve("洗澡")}, 2000);})}getTea().then((data) &#61;> {console.log(data);return getHotpot()}).then((data) &#61;> {console.log(data);return getFilm()}).then((data) &#61;> {console.log(data);return getKTV()}).then((data) &#61;> {console.log(data);return getBath()}).then((data) &#61;> {console.log(data);})

在这里插入图片描述

3.还有其他解决方案&#xff08;async await&#xff09;

async function getData(){let hotPot &#61; await getHotpot()console.log(hotPot);let tea &#61; await getTea()console.log(tea);let film &#61; await getFilm()console.log(film);let KTV &#61; await getKTV()console.log(KTV);let bath &#61; await getBath()console.log(bath);}getData()

在这里插入图片描述


推荐阅读
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • 前段时间做一个项目,需求是对每个视频添加预览图,这个问题最终选择方案是:用canvas.toDataYRL();来做转换获取视频的一个截图,添加到页面中,达到自动添加预览图的目的。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
author-avatar
go800li
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有