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

发布于 2019-08-09 字数 1973 浏览 944 评论 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技术交流群

您暂时不能评论!

管理员开启了需要登录才能够评论,你可以免费注册一个本站的账号。

还没有评论!

目前还没有任何评论,快来抢沙发吧!