菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >运维 >

JavaScript中的Task.js异步任务

Task.js是Mozilla进行的一项实验,旨在使JavaScript中的异步协作式任务看起来更加优美。它可以通过在最新版本的JavaScript中重新使用新的yield命令来工作-这是非常聪明的东西!

看起来一切正常,但是它需要ES6和对生成器的支持,这意味着目前仅在Firefox中可以使用。

如果您了解一点JavaScript,那么您还将知道异步编程是使其正常工作的关键。您不能简单地将执行结果的单线程耗费在系统和UI停止工作上。但是对于依赖异步编程的语言,JavaScript几乎无法提供帮助来解决非常混乱的编程习惯。

taskjs

最新的想法是利用生成器功能和新的yield命令。这使函数可以像返回一样将结果返回给调用者。不同之处在于,调用函数可以使函数从其上次中断的地方继续执行-这是一种有限的延续形式。

新框架实现了调度程序,并使用yield命令允许包装为任务的函数挂起其执行,直到完成一些异步操作为止。主要限制是,作为yield命令一部分调用的操作必须返回Promise对象。例如,大多数jQuery异步方法至少具有返回Promise或Deferred对象的选项。

因此,要等待返回值的异步调用的任务只是使用:

var结果= yield myAsynchMethod(arguments);

yield和myAsynchMethod返回的promise对象一起将控制权返回给调度程序。然后,调度程序将运行另一个任务,或者返回其线程以处理UI的事件。当myAsynchMethod完成时,它将解析promise并使用其结果值调用onResolve。这再次唤醒调度程序,并使用该值并使用send(value)命令以收益率继续执行原始任务。结果导致值而不是承诺被存储在结果中。

请注意,就使用框架和异步方法的程序员而言,无需了解有关Promise或一切工作原理的任何知识。如果您具有异步方法,则可以通过简单地使用yield来调用它,从而以一种似乎是同步的方式对其进行调用。

正如task.js网站所说:

生成者+承诺=任务

您可以在task.js网站上看到完整的示例:

spawn(function *(){var data = yield $ .ajax(url); $(“#result”)。html(data); var status = $(“#status”)。html(“ Download complete。”) ; yield status.fadeIn()。promise(); yield sleep(2000); status.fadeOut();});

关于task.js的工作原理,有很多细节,这是对ES6中添加的功能的一种有趣而巧妙的重新利用。毕竟,yield的真正目的是使编写迭代器变得容易,并且不允许异步操作将控制权交给调用函数。

task.js会流行吗?

它必须协商的第一个障碍是,所有浏览器都必须支持ES6,并且所有(或至少大多数)异步操作都需要返回承诺。这两个条件都需要一段时间才能成为现实。

然后是另一种方法,可以在JavaScript中构建更好的异步工具。许多程序员认为C#的async和await命令是执行异步操作的最佳方法。也许比重新产生收益更好的解决方案是添加JavaScript异步并等待。

无论未来如何发展,仅是了解task.js的工作原理,都非常值得一看。

taskjs

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。