Closed oliver1204 closed 5 years ago
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回一个 Promise 对象,等到异步操作完成,再接着执行函数体内后面的语句。
我们先来模拟一个请求:
function ajax { return new Promise(resolve => { setTimeout(resolve, 1000); }); }
用then 的方式写,如下:
ajax() .then(() => { console.log(value); })
上面的方法用async/await 的写法,如下:
let asyncPrint = async (value) => { await ajax(); console.log(value); } asyncPrint('hello world');
function ajax() { return new Promise(resolve, reject => { setTimeout(reject, 5000); }); } async function asyncPrint(value) { await ajax(); return value } asyncPrint('hello world') .then(result=> { console.log(result); }) .catch(err=>{ console.log(err) })
function ajax() { return new Promise(resolve, reject => { setTimeout(reject, 5000); }); } async function asyncPrint(value) { try{ await ajax(); console.log(value) }catch(err){ console.log(err) } await ajax(); return value } asyncPrint('hello world');
await 后面紧跟着的最好是一个耗时的操作或者是一个异步操作(当然非耗时的操作也可以的,但是就失去意义了) 如果 await 后面的异步操作出错,那么等同于 async 函数返回的 Promise 对象被 reject
笔者不知道有没有更好的方式,目前笔者借用的是Promise.reject() 方法来处理的。
if(response.success) { return response.data } else { return Promise.reject(response); }
简介
async/await 用法
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回一个 Promise 对象,等到异步操作完成,再接着执行函数体内后面的语句。
我们先来模拟一个请求:
用then 的方式写,如下:
上面的方法用async/await 的写法,如下:
async/await 错误处理
主动抛出错误
笔者不知道有没有更好的方式,目前笔者借用的是Promise.reject() 方法来处理的。