ajax
请求异步操做的原理:执行到须要的异步操做,会开始执行异步操做,不等执行完直接开始执行操做后面的语句,等语句执行彻底再去看异步操做是否执行完成,完成就返回完成,没有就继续执行异步。
const promise = new Promise(function(resolve, reject) {
// ... 请求代码
if (/* 异步操做成功 */){
resolve(value);
} else {
reject(error);
}
});
复制代码
then
为Promise
执行成功的语句promise.then(function(res){});
复制代码
catch
为Promise
执行失败的语句promise.catch(function(err){});
复制代码
promise.then(function(res){
}).catch(function(err){
});
复制代码
then
滥用的话也是很恶心的,不断的then下去。因此出了一个终极解决方案。ajax
async/await
是then/catch
的完美版。做用与then/catch
相同,只是用法上的区别。
await
都会先返回,再往下执行。变成了同步操做!async f1(){
const res = await promise;
}
复制代码
try/catch
监听Promise
返回状态,try
为成功,catch
失败async f1() {
try{
const res = await promise;
}catch(err){
console.log(err)
}
}
复制代码