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
分享到:
相关推荐
本章主要讲解登录模块中的事件绑定/表单验证/向服务器请求数据/前端数据Mock等内容,结合项目讲解ES6+中的async和await, Array.from, Promise 等API,以及新版浏览器的fetch API。并且对async和await,Promise, ...
源码实现需要熟悉Promise的使用,实现了Promise的then,catch,resolve,reject,all,race六种方法,测试的html自己编写一下就好了,记得引入promise文件 否则使用的就是js自带的promise
很多朋友在使用vue的过程中肯定会用到axios 请求,包括现在vux中已经自带了axios,而且用法也很简单,文档中写的比较清楚,但是当我们使用post提交时,却发现有时候会出现参数没有发送到服务器的问题,我记得文档中...
- 如需支持Promise特性,还需安装`es6-promise`: ```bash npm install es6-promise --save ``` - 在`main.js`中引入: ```javascript import 'es6-promise/auto'; ``` #### 五、添加测试环境配置 - **复制...
Promise 是 ES6 引入的一种解决异步编程复杂性的重要工具,它使得异步代码更加清晰、可读性强,并且避免了回调地狱的问题。本文将深入探讨 ajs-promises,一个关于 Promise 的实现库,以及 Promise 的核心概念、工作...
ES6、ES7:采用ES6语法,这是以后的趋势。箭头函数、Promise等等语法很好用。 localStorage:保存用户信息以及聊天记录。 Webpack:vue-cli自带Webpack,但是需要自己改造一下,比如要对需要安装sass相关loader,vue...
此外,还会涉及更高级的主题,如闭包、原型链、异步编程(回调、Promise、async/await)以及模块系统(CommonJS、ES6模块)。这些内容将帮助开发者建立扎实的JavaScript基础知识,理解和解决日常开发中的问题。 ...
9. **ES6+特性**:现代React项目广泛采用ES6+的语法,如箭头函数、解构赋值、模板字符串、Promise等,这些都能提高代码的可读性和效率。 10. **CSS-in-JS或样式库**:React项目中,CSS的处理方式多种多样,可能是...
Node.js的开发思想是模块化开发,这意味着我们可以使用require()方法导入模块,类似于ES6的导入Import。require()方法可以导入Node.js自带的模块,也可以导入外部模块。 Http模块 Http模块是Node.js自带的模块,...
6. **ECMAScript(ES6/7)**:模板中使用的 JavaScript 语言是基于 ES6 和 ES7 特性的,如箭头函数、类、解构赋值、async/await 等,这些现代语法糖提升了代码的可读性和简洁性。 7. **单元测试(Jest)**:Vue CLI...
- **Promise和async/await**:现代浏览器支持Promise,可以通过`$.ajax().then()`链式调用来处理异步操作。ES6引入的async/await语法进一步简化了异步编程,使得代码更接近同步逻辑。 - **跨域请求**:Ajax默认...
- 类(class)是ES6中引入的新特性,简化了面向对象编程的过程。 4. **实战篇**: - 本书提供了多个实际项目案例,如构建一个简单的网页游戏、实现一个动态网站等。 - 通过这些项目,读者可以亲自动手实践所学知识...
由于给定的文件信息中压缩包...现代JavaScript广泛支持ES6(ECMAScript 2015)及之后版本的新特性,如类、模块、箭头函数、解构赋值、Promise、async/await等。这些特性使得JavaScript代码更加简洁、模块化和易于维护。
- **Promise**: 一种用于处理异步操作的模式,解决回调地狱问题。 - **async/await**: 基于Promise的异步编程改进方案,使异步代码看起来像同步代码一样。 #### 八、调试技巧 - **console.log()**: 最常用的调试...
开发者需要熟悉ES6及以上版本的语法,包括Promise、箭头函数、类等特性。 4. **表单设计**:从文件名“表单设计”可以推测,该小程序包含了一些表单元素,如输入框、选择器、提交按钮等,这些都是用户进行打卡操作...
5. **Axios**:一个基于Promise的HTTP库,常用于Vue项目中的数据请求,如API接口调用,获取或提交服务器数据。 6. **Mock Server**:在开发过程中,项目可能包含了mock数据服务,帮助开发者在没有后端支持时也能...
2. **动态数据加载**:JavaScript(可能是ES6+版本)用于处理页面的动态交互,如点击按钮加载更多评论、滑动查看房间图片等。可能使用了Vue.js、React.js等前端框架,它们提供了组件化开发和状态管理的能力,简化了...
首先,"util.polyfill" 是一个工具模块,它提供了 JavaScript 的兼容性补丁,尤其是针对那些在某些旧版浏览器中未被支持的 ES6 及以上版本的新特性。例如,Promise、Array.from、Map 和 Set 等。通过这个模块,...
了解 ES6 及以上版本的新特性,如箭头函数、模板字符串、类和模块,对于高效开发至关重要。 1. **布局与表格组件**:Element UI 提供了 `el-row` 和 `el-col` 用于栅格布局,可以根据需求灵活地划分页面结构。`el-...