async
:async
写在函式前面,表示函式是非同步的,回传值是 Promise,所以可以接续使用 then 进行後续处理await
:await
要写在 async
内部,await
後面接的是一个 Promise,等待 Promise 的状态被 resolved,之後才会继续执行下一段程序,类似 then
catch
可以使用 try catch
参考 MDN 的例子比较
// 使用 promise 写法
function getProcessedData(url) {
return downloadData(url) // returns a promise
.catch(e => {
return downloadFallbackData(url); // returns a promise
})
.then(v => {
return processDataInWorker(v); // returns a promise
});
}
// 使用 async await
async function getProcessedData(url) {
let v;
try {
v = await downloadData(url); // 对应 return
} catch(e) {
v = await downloadFallbackData(url); // 对应 .catch
}
return processDataInWorker(v); // 对应 .then
}
等待处理的例子
function resolveAfterXSeconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
console.log(`${x} Seconds`);
}, x*1000);
});
}
async function add(x) {
const a = await resolveAfterXSeconds(3); // a 先执行
const b = await resolveAfterXSeconds(2); // 等 a 执行完
return x + a + b;
}
add(10).then(v => {
console.log(v); // prints 15
});
// 3 Seconds 等 a 执行完
// 2 Seconds 等 b 执行完
// 15 (5秒後 10 + 3 + 2 = 15)
MDN async function
铁人赛:JavaScript Await 与 Async
JavaScript基本功修练:Day26 - Promise的语法糖:async/await
简单理解 JavaScript Async 和 Await
JS 原力觉醒 Day16 - Async / Await:Promise 语法糖
【Day 11】穿越 ES6 迈向 ES7 的 async/await
来说说 IIFE
<<: [27] 用 python 刷 Leetcode: 455
>>: JS Library 学习笔记:Three.js 初见面,在2D画面创造三维世界 (一)
好的,前一篇讲到了flow可以完全取代liveData,其实错!! 直接从结论开始讲,flow并不支...
接下来我们要针对基本变数型态做一些简单的介绍,以及超级重要的阵列!那这篇先以variables为主。...
夜阑人静小可怕 别怕!你有铁人赛,写吧! 心得 tags: 铁人赛 Templates 嗨,大家安...
嗨!大家好,昨天我们做了新增以及划掉的功能,今天让我们来完成删除跟切换标签,最後让完成的任务进入到完...
近期在接 Facebook SDK 做第三方登入时发现 只要不是 Release 版的 apk 就无...