ES6中promise
代码1:
<script>
/**
* promise是对于异步操作*/
let p1 = new Promise(function (resolve, reject) {
//异步代码
//resolve成功的处理
//reject失败的处理
$.ajax({
url: "arr.txt",
dataType: "json",
success(arr) {
resolve(arr)
},
error(err) {
reject(err);
}
})
})
p1.then((arr) => {
console.log("ajax成功")
console.log(arr);
},
(err) => {
console.log("ajax失败")
console.log(err);
})
//接下来存在多个promise
let p2 = new Promise(function (resolve, reject) {
$.ajax({
url: "json.txt",
dataType: "json",
success(arr) {
resolve(arr)
},
error(err) {
reject(err);
}
})
})
//Promise中存在all方法只有所有的异步请求都是成功的才会执行成功的方法
Promise.all([p1, p2]).then(function (arr) {
console.log("异步请求都成功了");
console.log(arr);
}, function () {
console.log("有一个异步请求失败了");
})
</script>
代码2:
<script>
/**
* promise是异步操作的包装,then方法可以将resolve和reject方法放到promise对象中继续执行,
* 并且then函数返回的仍然是一个promise对象(前提是执行的结果没有返回对象,或者返回的不是Promise
* 对象),若返回的是一个全新的Promise对象那么就可以继续then下去
* */
function Pro() {
return new Promise(function (resolve, reject) {
$.ajax({
url: "arr2.txt",
dataType: "json",
success(arr) {
resolve(arr)
},
error(err) {
reject(err);
}
})
})
}
let p1 = new Pro()
//Promise对象在执行完then函数对象之后,与之前Promise对象之间的差距
// console.log(p1);
// console.log(p1.then(() => {
// console.log("success11111");
// // return new Pro()
// }, () => {
// console.log("error11111");
// // return new Pro()
// }));
// console.log("-------------------------------------");
//Promise的链式编程
p1.then(() => {
console.log("success11111");
// return new Pro()
}, () => {
console.log("error11111");
return new Pro()
// return "1111"
}).then(() => {
console.log("success22222");
}, () => {
console.log("error22222");
})
</script>

浙公网安备 33010602011771号