RSVP.js 使用教程
项目介绍
RSVP.js 是一个轻量级的 JavaScript 库,提供了组织异步代码的工具,特别是实现了 Promises/A+ 规范。它可以在 Node.js 和浏览器(包括 IE9+ 和所有主流的现代浏览器)中运行。RSVP.js 确保所有的 Promise 都是异步执行的,即使值已经可用,这有助于编写一致的代码,无论底层数据提供者是从同步变为异步。
项目快速启动
安装
你可以通过 npm 或 yarn 安装 RSVP.js:
npm install --save rsvp
# 或者
yarn add rsvp
基本使用
以下是一个简单的 RSVP.js Promise 使用示例:
var RSVP = require('rsvp');
var promise = new RSVP.Promise(function(resolve, reject) {
// 成功时
resolve(value);
// 或者失败时
reject(error);
});
promise.then(function(value) {
// 成功处理
}).catch(function(error) {
// 失败处理
});
应用案例和最佳实践
XHR2 包装器
以下是一个使用 RSVP.js 编写的简单 XHR2 包装器示例:
var getJSON = function(url) {
var promise = new RSVP.Promise(function(resolve, reject) {
var client = new XMLHttpRequest();
client.open("GET", url);
client.onreadystatechange = handler;
client.responseType = "json";
client.setRequestHeader("Accept", "application/json");
client.send();
function handler() {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
}
};
});
return promise;
};
getJSON("posts.json").then(function(json) {
console.log('Contents: ' + json);
}).catch(function(error) {
console.error('出错了', error);
});
典型生态项目
ES6-Promise
如果你更喜欢一个严格遵循 ES6 规范的 Promise 库,可以考虑使用 es6-promise
,它是 RSVP.js 的一个子集,去除了一些额外的功能,只保留了 ES6 规范中的特性。
npm install --save es6-promise
TaskJS
TaskJS 是一个使用 ES6 生成器的库,由 Mozilla 的 Dave Herman 开发。它允许你使用 Promise 编写同步代码。RSVP.js 与 TaskJS 兼容,可以一起使用来组织异步代码。
npm install --save taskjs
通过这些模块的介绍和示例,你应该能够快速上手并有效地使用 RSVP.js 来管理你的异步代码。