contacts/js/dav/lib/sandbox.js

35 lines
748 B
JavaScript

/**
* @fileoverview Group requests together and then abort as a group.
*
* var sandbox = new dav.Sandbox();
* return Promise.all([
* dav.createEvent(event, { sandbox: sandbox }),
* dav.deleteEvent(other, { sandbox: sandbox })
* ])
* .catch(function() {
* // Something went wrong so abort all requests.
* sandbox.abort;
* });
*/
let debug = require('./debug')('dav:sandbox');
export class Sandbox {
constructor() {
this.requestList = [];
}
add(request) {
debug('Adding request to sandbox.');
this.requestList.push(request);
}
abort() {
debug('Aborting sandboxed requests.');
this.requestList.forEach(request => request.abort());
}
}
export function createSandbox() {
return new Sandbox();
}