`
wx1568844008
  • 浏览: 5700 次
文章分类
社区版块
存档分类
最新评论

ES6中自带的promise的问题

 
阅读更多

ES6中的Promise作用:解决异步嵌套问题。

但是只能解决两层嵌套,不能解决两层以上嵌套;

解决方法是我自己封装的函数如下:

      function Promising(){
           var _arr=[];
           this.then=function(fx){
               //将回调函数存到数组中,等队列算法去顺序调用
               _arr.push(fx);
               return this;//返回自身的this,可以重复调用then()方法
           }
           this.resolve=function(value){//可以传个参数
               //作用:按照先进先出的顺序调用数组中的函数
               if(_arr.length>0){
                   _arr.shift()(value);//执行队列中的第一个函数
               }
           }
       }
       
       var _promise=new Promising();//new一个对象
       _promise.then(function(){
           window.setTimeout(function(){//这里的延时器也是异步
               alert("3s");//先弹出3s;
               _promise.resolve();//每次执行完我们想执行的代码,就要调用resolve()方法,保证能执行下一个函数
           },3000);
       }).then(function(){
           window.setTimeout(function(){
               alert("2s");//再弹出2s;
               _promise.resolve();
           },2000);
       }).then(function(){
           window.setTimeout(function(){
               alert("1s");//再弹出1;
               _promise.resolve("tip");
           },1000);
       }).then(function(value){
           alert(value);
       }).resolve();

这样可以解决两层以上嵌套;

非常方便,有什么意见请留言!

转载于:https://my.oschina.net/u/3341316/blog/857867

分享到:
评论

相关推荐

    ES6+ 开发电商网站的账号体系 JS SDK

    本章主要讲解登录模块中的事件绑定/表单验证/向服务器请求数据/前端数据Mock等内容,结合项目讲解ES6+中的async和await, Array.from, Promise 等API,以及新版浏览器的fetch API。并且对async和await,Promise, ...

    promise.js

    源码实现需要熟悉Promise的使用,实现了Promise的then,catch,resolve,reject,all,race六种方法,测试的html自己编写一下就好了,记得引入promise文件 否则使用的就是js自带的promise

    解决vue处理axios post请求传参的问题

    很多朋友在使用vue的过程中肯定会用到axios 请求,包括现在vux中已经自带了axios,而且用法也很简单,文档中写的比较清楚,但是当我们使用post提交时,却发现有时候会出现参数没有发送到服务器的问题,我记得文档中...

    vue前端架构文档

    - 如需支持Promise特性,还需安装`es6-promise`: ```bash npm install es6-promise --save ``` - 在`main.js`中引入: ```javascript import 'es6-promise/auto'; ``` #### 五、添加测试环境配置 - **复制...

    ajs-promises

    Promise 是 ES6 引入的一种解决异步编程复杂性的重要工具,它使得异步代码更加清晰、可读性强,并且避免了回调地狱的问题。本文将深入探讨 ajs-promises,一个关于 Promise 的实现库,以及 Promise 的核心概念、工作...

    基于Vue+Socket.io+Express/Koa2开发的智能聊天室,包含IP定位、在线群聊,加入了表情管理,接入智能机器人

    ES6、ES7:采用ES6语法,这是以后的趋势。箭头函数、Promise等等语法很好用。 localStorage:保存用户信息以及聊天记录。 Webpack:vue-cli自带Webpack,但是需要自己改造一下,比如要对需要安装sass相关loader,vue...

    js帮助文档整合有130个经典案例还有帮助文档

    此外,还会涉及更高级的主题,如闭包、原型链、异步编程(回调、Promise、async/await)以及模块系统(CommonJS、ES6模块)。这些内容将帮助开发者建立扎实的JavaScript基础知识,理解和解决日常开发中的问题。 ...

    react-code-challenge-源码.rar

    9. **ES6+特性**:现代React项目广泛采用ES6+的语法,如箭头函数、解构赋值、模板字符串、Promise等,这些都能提高代码的可读性和效率。 10. **CSS-in-JS或样式库**:React项目中,CSS的处理方式多种多样,可能是...

    node.js实用知识库分享

    Node.js的开发思想是模块化开发,这意味着我们可以使用require()方法导入模块,类似于ES6的导入Import。require()方法可以导入Node.js自带的模块,也可以导入外部模块。 Http模块 Http模块是Node.js自带的模块,...

    基于vue-cli3的后台管理系统模板

    6. **ECMAScript(ES6/7)**:模板中使用的 JavaScript 语言是基于 ES6 和 ES7 特性的,如箭头函数、类、解构赋值、async/await 等,这些现代语法糖提升了代码的可读性和简洁性。 7. **单元测试(Jest)**:Vue CLI...

    Ajax应用的最简单实例

    - **Promise和async/await**:现代浏览器支持Promise,可以通过`$.ajax().then()`链式调用来处理异步操作。ES6引入的async/await语法进一步简化了异步编程,使得代码更接近同步逻辑。 - **跨域请求**:Ajax默认...

    Javascript - The Web Warrior Series 6th Edition

    - 类(class)是ES6中引入的新特性,简化了面向对象编程的过程。 4. **实战篇**: - 本书提供了多个实际项目案例,如构建一个简单的网页游戏、实现一个动态网站等。 - 通过这些项目,读者可以亲自动手实践所学知识...

    javascript.zip

    由于给定的文件信息中压缩包...现代JavaScript广泛支持ES6(ECMAScript 2015)及之后版本的新特性,如类、模块、箭头函数、解构赋值、Promise、async/await等。这些特性使得JavaScript代码更加简洁、模块化和易于维护。

    JavaScript新手指南

    - **Promise**: 一种用于处理异步操作的模式,解决回调地狱问题。 - **async/await**: 基于Promise的异步编程改进方案,使异步代码看起来像同步代码一样。 #### 八、调试技巧 - **console.log()**: 最常用的调试...

    易打卡小程序

    开发者需要熟悉ES6及以上版本的语法,包括Promise、箭头函数、类等特性。 4. **表单设计**:从文件名“表单设计”可以推测,该小程序包含了一些表单元素,如输入框、选择器、提交按钮等,这些都是用户进行打卡操作...

    vue-admin-beautiful-master.zip

    5. **Axios**:一个基于Promise的HTTP库,常用于Vue项目中的数据请求,如API接口调用,获取或提交服务器数据。 6. **Mock Server**:在开发过程中,项目可能包含了mock数据服务,帮助开发者在没有后端支持时也能...

    酒店预订小程序酒店详情页面源码.zip

    2. **动态数据加载**:JavaScript(可能是ES6+版本)用于处理页面的动态交互,如点击按钮加载更多评论、滑动查看房间图片等。可能使用了Vue.js、React.js等前端框架,它们提供了组件化开发和状态管理的能力,简化了...

    browser.lib:浏览器的 JS 模块集合

    首先,"util.polyfill" 是一个工具模块,它提供了 JavaScript 的兼容性补丁,尤其是针对那些在某些旧版浏览器中未被支持的 ES6 及以上版本的新特性。例如,Promise、Array.from、Map 和 Set 等。通过这个模块,...

    elementUI前端CRUD页面

    了解 ES6 及以上版本的新特性,如箭头函数、模板字符串、类和模块,对于高效开发至关重要。 1. **布局与表格组件**:Element UI 提供了 `el-row` 和 `el-col` 用于栅格布局,可以根据需求灵活地划分页面结构。`el-...

Global site tag (gtag.js) - Google Analytics