没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
4页
前言 Node.js 7.6 已经支持 async/await 了,如果你还没有试过,这篇博客将告诉你为什么要用它。 Async/Await 简介 对于从未听说过 async/await 的朋友,下面是简介: async/await 是写异步代码的新方式,以前的方法有回调函数和Promise。 async/await 是基于 Promise 实现的,它不能用于普通的回调函数。 async/await 与 Promise 一样,是非阻塞的。 async/await 使得异步代码看起来像同步代码,这正是它的魔力所在。 Async/Await 语法 示例中,getJSON 函数返
资源推荐
资源详情
资源评论
Async/Await替代替代Promise的的6个理由个理由
前言前言
Node.js 7.6 已经支持 async/await 了,如果你还没有试过,这篇博客将告诉你为什么要用它。
Async/Await 简介简介
对于从未听说过 async/await 的朋友,下面是简介:
async/await 是写异步代码的新方式,以前的方法有回调函数和Promise。
async/await 是基于 Promise 实现的,它不能用于普通的回调函数。
async/await 与 Promise 一样,是非阻塞的。
async/await 使得异步代码看起来像同步代码,这正是它的魔力所在。
Async/Await 语法语法
示例中,getJSON 函数返回一个 promise,这个 promise 成功 resolve 时会返回一个 json 对象。我们只是调用这个函数,打
印返回的 JSON 对象,然后返回”done”。
使用 Promise 是这样的:
const makeRequest = () =>
getJSON().then(data => {
console.log(data);
return "done";
});
makeRequest();
使用 Async/Await 是这样的:
const makeRequest = async () => {
console.log(await getJSON());
return "done";
};
makeRequest();
它们有一些细微不同:
函数前面多了一个 async 关键字。await 关键字只能用在 async 定义的函数内。async 函数会隐式地返回一个 promise,该
promise 的 reosolve 值就是函数 return 的值。(示例中 reosolve 值就是字符串”done”)
第 1 点暗示我们不能在最外层代码中使用 await,因为不在 async 函数内。
// 不能在最外层代码中使用await
await makeRequest();
// 这是会出事情的
makeRequest().then(result => {
// 代码
});
await getJSON()表示 console.log 会等到 getJSON 的 promise 成功 reosolve 之后再执行。
为什么为什么 Async/Await 更好?更好?
1. 简洁简洁
由示例可知,使用 Async/Await 明显节约了不少代码。我们不需要写.then,不需要写匿名函数处理 Promise 的 resolve 值,
也不需要定义多余的 data 变量,还避免了嵌套代码。这些小的优点会迅速累计起来,这在之后的代码示例中会更加明显。
2. 错误处理错误处理
Async/Await 让 try/catch 可以同时处理同步和异步错误。在下面的 promise 示例中,try/catch 不能处理 JSON.parse 的错
误,因为它在 Promise 中。我们需要使用.catch,这样错误处理代码非常冗余。并且,在我们的实际生产代码会更加复杂。
const makeRequest = () => {
try {
getJSON().then(result => {
// JSON.parse可能会出错
const data = JSON.parse(result);
console.log(data);
资源评论
weixin_38711333
- 粉丝: 4
- 资源: 976
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功