Promise 例子
function fn() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const n = Math.random();
n >= 0.5 ? resolve(n) : reject(n);
}, 2000);
});
}
fn().then(val => { console.log(val, 'succeed'); })
.catch(val => { console.log(val, 'failed'); });
如果then方法里又返回了promise对象,则代码风格会比较散乱,可控性差。
async-await 改造
function fn() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const n = Math.random();
n >= 0.5 ? resolve(n) : reject(n);
}, 2000);
});
}
async function count() {
try {
const number = await fn();
console.log('success', number);
} catch (errorNumber) {
console.log('fail', errorNumber);
}
}
count();
-
async-await
允许你用同步的代码风格编写异步代码。
-
async-await
实际上就是 promise 的语法糖,resolve 后的参数会通过 await 赋值给 number , reject 后的参数会赋值 errorNumber。
async-await 用法解释
- await 只能在 async 函数内使用
- await 后面接一个 promise 对象(或者 return Promise() 的函数)
- async-await 没有处理错误的方式,所以需要用 try catch 方式进行错误处理
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。