[TOC]
## Promise--清除异步操作
~~~
//Promise.all()装载promise对象
let b = $.ajax({url:"json/a.txt",dataType:"json"});
let a = $.ajax({url:"json/b.txt",dataType:"json"});
Promise.all([a,b]).then(function(results){
let [res1,res2] = results;
console.log(res1);
console.log(res2);
},function(err){
//fail
console.log(err.status)
~~~
>用同步一样的方式,来书写异步代码
~~~
let p = new Promise(function(resovle,reject){
//resolve--成功
//reject--失败
$.ajax({
url:"json/a.tt",
dataType:"json",
success(data){
resovle(data);
},
error(err){
reject(err);
}
})
})
p.then(function(data){
//success
console.log(data);
},function(err){
//failCode
alert(err.status)
})
~~~
## 1.Promise.all()
~~~
//语法
Promise.all([a,b]).then(function(arr){
//success
let [res1,res2]=arr;
},function(){
//failcode
})
~~~
#### 1.1 使用
~~~
let a = new Promise(function (resovle, reject) {
//resolve--成功
//reject--失败
$.ajax({
url: "json/a.txt",
dataType: "json",
success(data) {
resovle(data);
},
error(err) {
reject(err);
}
})
})
let b = new Promise(function (resovle, reject) {
//resolve--成功
//reject--失败
$.ajax({
url: "json/b.txt",
dataType: "json",
success(data) {
resovle(data);
},
error(err) {
reject(err);
}
})
})
Promise.all([a,b]).then(function(arr){
//全都成功执行以下代码,成功的参数传人arr,返回数组
let [res1,res2]=arr;
console.log(res1);
console.log(res2);
},function(){
alert("fail")
})
~~~
#### 1.2 封装Promise
~~~
function createPromise(url) {
return new Promise(function (resovle, reject) {
//resolve--成功
//reject--失败
$.ajax({
url,
dataType: "json",
success(data) {
resovle(data);
},
error(err) {
reject(err);
}
})
})
}
var a = createPromise("json/a.txt");
var b = createPromise("json/b.txt");
Promise.all([a,b]).then(function (arr) {
//全都成功执行以下代码,成功的参数传人arr,返回数组
let [res1, res2] = arr;
console.log(res1);
console.log(res2);
}, function () {
alert("fail")
})
~~~
#### 1.3高版本的jquery,ajax本身就是promise对象
>Tip:不用封装
~~~
let b = $.ajax({url:"json/a.txt",dataType:"json"});
let a = $.ajax({url:"json/b.txt",dataType:"json"});
Promise.all([a,b]).then(function(results){
let [res1,res2] = results;
console.log(res1);
console.log(res2);
},function(err){
//fail
console.log(err.status)
})
~~~
- 将es6转为es5
- 第一节 webpack
- 第二章 基础语法
- 第1节 模块化
- 第2节set和map语法
- 2.1 set
- 第3节 变量
- 第4节 循环of
- 第5节 function
- 第6节 解构赋值
- 1.在对象在函数中的解构
- 第7节 字符串
- 第8节 面向对象
- 8-1 static静态属性,静态方法
- 第9节 JSON对象
- 9-1 Object.keys()
- 第10节 Promise
- 10.1 原理
- 10.2 回调地狱
- 第11节 generator
- 第一节 基本
- 第二节 generator-ajax
- 第12节 yield
- 第13节 asnyc
- 13.1
- 13.2 ajax
- 第14节 array
- 第15节 string方法拓展
- 第三章 webpack的简单配置
- 第四章 高级语法
- 第1节 promise
- a.实例
- b.promise
- 第2节 await,async