javascript中的anync/await
javascript中的async,await
Async( 声明一个异步函数)
- 自动将常规函数转换为Promise。
- 异步函数允许使用await。
- 当调用异步函数时,使用其主体中返回的内容。
Await(暂停异步函数的执行)
- 当置于Promise调用前面时,await强制其余代码等待,直到该Promise完成并返回结果。
- await仅适用于Promises,它不适用于回调。
- await只能在异步函数内部使用(在ansyc中)。
使用async/await会比Promise好嘛?
- 使用Async / Await时,我们仍在使用Promise。
async function getABC() {
let A = await getValueA(); // 2 second to finish
let B = await getValueB(); // 4 second to finish
let C = await getValueC(); // 3 second to finish
return A*B*C;
}
async function getABC() {
// Promise.all()允许我们同时发送所有请求。
let results = await Promise.all([ getValueA, getValueB, getValueC ]);
return results.reduce((total,value) => total * value);
}
- 第二种方法优于第一种方法,第一种方法需要等待第一个方法执行完才执行第二方法....,第二种方法异步执行,等到所有的都执行完毕,显示。
- 如果多次异步请求得到的值不相互影响,建议使用Promise,否则建议使用async/await;
如何处理Async / Await中的错误
-
使用try / catch块中捕获任何意外错误;
-
async function doSomethingAsync(){ try { // 此异步调用可能会失败. let result = await someAsyncCall(); } catch(error) { // 我们将在这里发现错误 } } -
const result = await someAsyncCall().catch()
-

浙公网安备 33010602011771号