涉猎ECMAScript6(ES6/ES2015)Promise(异步流控制)

Promise不是用来取代回调的,而是管理回调函数,增强代码的可读性。另一种理解Promises是一个事件监听器,我们可以注册一个监听函数,在任务执行完时通知我。只是这些事件只触发一次。Promise能够把这些异步任务链接到一起,提供一套异步流控制的机制。Promise仅仅有两种可能的结果:满足或拒绝(fulfilled or rejected),只能被resolved(fulfilled or rejected)一次,一次执行完以后就不能再改变。

使用Promise

1.基本用法

 

2.Promise方法使用(all,race)

function asyncTask() {
 var promise = new Promise(function(resolve, reject) {
 setTimeout(function() {
 console.log("1秒以后:");
 resolve(); //设置状态(成功或失败),可以传递参数
 }, 1 * 1000);
 });
 return promise;
 }

 function asyncTask2() {
 var promise = new Promise(function(resolve, reject) {
 setTimeout(function() {
 console.log("2秒以后:");
 resolve(); //设置状态(成功或失败),可以传递参数
 }, 2 * 1000);
 });
 return promise;
 }

 function asyncTask3() {
 var promise = new Promise(function(resolve, reject) {
 setTimeout(function() {
 console.log("3秒以后:");
 resolve(); //设置状态(成功或失败),可以传递参数
 }, 3 * 1000);
 });
 return promise;
 }

 Promise.all([asyncTask(),asyncTask2(),asyncTask3()]).then(function(){
 console.log("全部执行成功");
 })
//race只需要有一个成功

本文参考原文:https://github.com/getify/You-Dont-Know-JS

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/1606
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注