异步操做 Promise,then/catch,async/await

Promise主要处理异步操做,确认异步操做完成再执行后面的语句。

js一般是单线程的,经常使用的异步操做有:

  • ajax请求
  • io操做(文件读取)
  • 定时器

异步操做的原理:执行到须要的异步操做,会开始执行异步操做,不等执行完直接开始执行操做后面的语句,等语句执行彻底再去看异步操做是否执行完成,完成就返回完成,没有就继续执行异步。

  • 经常使用的异步请求操做

const promise = new Promise(function(resolve, reject) {
  // ... 请求代码

  if (/* 异步操做成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});
复制代码
  • then/catch

thenPromise执行成功的语句

promise.then(function(res){});
复制代码

catchPromise执行失败的语句

promise.catch(function(err){});
复制代码

常规用法

promise.then(function(res){
    
}).catch(function(err){
    
});
复制代码

then滥用的话也是很恶心的,不断的then下去。因此出了一个终极解决方案。ajax

  • async/await

async/awaitthen/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)
  }
}
复制代码
相关文章
相关标签/搜索