When.js 一个快速可靠的 Promises/A+ 异步编程实现
When.js 是一个独立的可靠的高效的 Promises/A+ 异步编程实现,包括一个完整的 ES6 promise-shim。它是小尺寸、高性能、可调试性和丰富功能的强大组合:
- 异步处理解析数组和散列,以及无限的异步序列
- 并行或顺序执行任务
- 将节点样式和其他基于回调的 API 转换为基于 Promise 的 API
When.js 是 JavaScript 体系结构工具包 cujoJS 的众多独立组件之一。
安装
通过 bower 或者 npm 安装
bower install --save when npm install --save when
使用实例
Promises 可以用来帮助以简单的方式管理复杂的和嵌套的回调流。为了更好地处理承诺流的外观以及它们如何有用,下面有几个例子(使用commonJS)。
第一个示例将打印 Hello World!!!,如果一切顺利的话,或者说是 "drat!",如果有问题的话。它还使用 REST 向(虚构的)外部服务发出 Ajax 请求。
var rest = require('rest'); fetchRemoteGreeting() .then(addExclamation) .catch(handleError) .done(function(greeting) { console.log(greeting); }); function fetchRemoteGreeting() { // convert native Promise to a when.js promise for 'hello world' var result = rest('http://example.com/greeting'); return when(result) } function addExclamation(greeting) { return greeting + '!!!!' } function handleError(e) { return 'drat!'; }
第二个例子展示了 When 的 Promise 逻辑所带来的能力。在这里,我们从一个远程源获取一个数字数组,并减少它们。如果一切正常,示例将打印150,如果有问题,将打印完整的堆栈跟踪。
var when = require('when'); var rest = require('rest'); when.reduce(when.map(getRemoteNumberList(), times10), sum) .done(function(result) { console.log(result); }); function getRemoteNumberList() { // Get a remote array [1, 2, 3, 4, 5] return rest('http://example.com/numbers').then(JSON.parse); } function sum(x, y) { return x + y; } function times10(x) {return x * 10; }
Github 地址:https://github.com/cujojs/when
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论