When.js 一个快速可靠的 Promises/A+ 异步编程实现

发布于 2019-08-09 20:05:41 字数 1655 浏览 2212 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

qq_aHcEbj

文章 0 评论 0

寄与心

文章 0 评论 0

13545243122

文章 0 评论 0

流星番茄

文章 0 评论 0

春庭雪

文章 0 评论 0

潮男不是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文