Add async primitives for http queries, failure handling and mapping non-async functions
This commit is contained in:
parent
52a7e883fa
commit
2f41708e7a
1 changed files with 32 additions and 0 deletions
32
async.js
32
async.js
|
@ -2,6 +2,9 @@ function Async() {
|
||||||
return {
|
return {
|
||||||
apply: apply,
|
apply: apply,
|
||||||
bind: bind,
|
bind: bind,
|
||||||
|
fail: fail,
|
||||||
|
http: http,
|
||||||
|
map: map,
|
||||||
parallel: parallel,
|
parallel: parallel,
|
||||||
run: run,
|
run: run,
|
||||||
sequence: sequence,
|
sequence: sequence,
|
||||||
|
@ -35,6 +38,20 @@ function Async() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fail(message) {
|
||||||
|
return function(f) {
|
||||||
|
console.log(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function map(mapper) {
|
||||||
|
return function(x) {
|
||||||
|
return function(f) {
|
||||||
|
f(mapper(x));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function parallel() {
|
function parallel() {
|
||||||
var threads = arguments;
|
var threads = arguments;
|
||||||
var pending = threads.length;
|
var pending = threads.length;
|
||||||
|
@ -96,4 +113,19 @@ function Async() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function http(query) {
|
||||||
|
return function(f) {
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.addEventListener('load', function() {
|
||||||
|
f(this);
|
||||||
|
});
|
||||||
|
xhr.open(query.method, query.url);
|
||||||
|
if(query.method == 'POST') {
|
||||||
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
}
|
||||||
|
xhr.send(query.body);
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue