javascript – ES2017 – Async vs. Yield
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – ES2017 – Async vs. Yield,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2037字,纯文字阅读大概需要3分钟。
内容图文
![javascript – ES2017 – Async vs. Yield](/upload/InfoBanner/zyjiaocheng/708/98bb9aaf367d48b9969442382864ff7a.jpg)
我对当前关于添加异步函数和关键字等待下一个EcmaScript的讨论感到困惑.
我不明白为什么有必要在function关键字之前使用async关键字.
从我的角度来看,await关键字等待生成器或promise的结果,函数的返回应该足够了.
await应该可以在普通函数和生成器函数中使用,而不需要额外的异步标记.
如果我需要创建一个函数作为await的结果,我只需使用一个promise.
我的理由是this很好的解释,下面的例子来自:
async function setupNewUser(name) {
var invitations,
newUser = await createUser(name),
friends = await getFacebookFriends(name);
if (friends) {
invitations = await inviteFacebookFriends(friends);
}
// some more logic
}
它也可以作为普通函数完成,如果函数的执行将等待完成孔函数,直到满足所有等待.
function setupNewUser(name) {
var invitations,
newUser = await createUser(name),
friends = await getFacebookFriends(name);
if (friends) {
invitations = await inviteFacebookFriends(friends);
}
// return because createUser() and getFacebookFriends() and maybe inviteFacebookFriends() finished their awaited result.
}
在我看来,整个功能执行一直持续到下一个滴答(等待履行)完成.与Generator-Function的不同之处在于next()正在触发并更改对象的值和完成字段.一个函数将简单地返回结果,并且触发器是一个函数内部触发器,如while循环.
解决方法:
I do not understand why it is necessary to have the
async
keyword before the function keyword.
出于同样的原因,我们在生成器函数之前有*符号:它们将函数标记为非凡.它们在这方面非常相似 – 它们添加了一个可视标记,该函数的主体本身不会完成运行,但可以与其他代码任意交错.
> *表示一个生成器函数,它将始终返回一个可以从外部进行推进(和停止)的生成器,类似于迭代器.
> async表示一个异步函数,它将始终返回一个依赖于其他promise的promise,其执行与其他异步操作并发(并且可能从外部取消).
确实,关键字不是绝对必要的,函数的类型可以通过相应的关键字(yield(*)/ await)是否出现在其正文中来确定,但这会导致代码的可维护性降低:
>不易理解,因为你需要扫描整个身体来确定那种
>更多errorprone,因为通过添加/删除这些关键字而不会出现语法错误很容易破坏功能
a normal function, whose execution will wait for finishing the hole body until all awaits are fulfilled
这听起来像你想要一个阻塞功能,在并发设置中是一个very bad idea.
内容总结
以上是互联网集市为您收集整理的javascript – ES2017 – Async vs. Yield全部内容,希望文章能够帮你解决javascript – ES2017 – Async vs. Yield所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。