在异步发起网络请求时,原来使用AJAX的时候,在异步操作中进行异步操作,太多的话会出现“回调地狱”
ES6新增的Promise解决此问题,使异步操作的网络请求写法更“优雅”
将异步操作网络请求与获取data之后对data进行操作的代码分离开,一个在Promise里,一个在then里
四种用法:
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('111')
}, 1000)
}).then((info) => {
console.log(info);
})
new Promise((resolve, reject) => {
setTimeout(() => {
reject('111')
}, 1000)
}).catch((info) => {
console.log(info);
})
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('111')
}, 1000)
}).then((info) => {
console.log(info);
}, (err) => {
console.log(err);
})
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功')
}, 1000)
}).then((info) => {
return info + '加上'
}).then((info) => {
console.log(info+'第二次成功');
}
var p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('p1')
}, 1000)
})
var p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('p2')
}, 1000)
})
Promise.all([p1, p2]).then((results) => {
console.log(results);
}