概念
-
Promise是什么?
promise可以把异步编程同步化。 有了peomise就避免了层层嵌套的回调函数,也就是说解决了回调地狱问题。 promise有三种状态,pending(进行中)、resolve(成功回调)、rejected(失败回调)。 promise对象的状态改变,只有两种可能:从pending变为fulfilled,从pending变为rejected。 -
Promise也有一些缺点。
首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。 其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。 第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
Promise的用法
//封装Promise
function createPromise(url){
return new Promise(function(resolve,reject){
$.ajax({
url: url,
success:function(response){
resolve(response) //返回数据
},
error:function(error){
reject(error)
}
})
});
}
//用async和await
async function get() {
let data = await createPromise("./data/sheng.txt");
let data2 = await createPromise("./data/shi.txt");
let data3 = await createPromise("./data/xian.txt");
console.log(data)
console.log(data2)
console.log(data3)
}