这是非常简单的控制异步操作async module或者你可以使用vasync这就好比异步但具有更好的日志记录的例子。
var postSomething1 = function(cb) {
$http.post(URL1, params1).success(function(data){
cb(null, data);
})
.error(cb);
};
var putSomething = function(cb) {
$http.put(URL1, params1).success(function(data){
cb(null, data);
})
.error(cb);
};
var tasks = [
postSomething,
putSomething
];
var done = function(err, result){
console.log("Complete with err", err, " result", result);
};
async.parallel(tasks, done);
因为你有更多的方法,你意识到你可以重构这样的:
var call = function(method, url, params) {
return function(cb) {
var method = method.toLowerCase();
$http[method](url, params).success(function(data){
cb(null, data);
})
.error(cb);
};
};
var tasks = [
call('POST', 'http://example.com/create/event', { event_name: 'Cool' }),
call('PUT', 'http://example.com/update', { name: 'Jon' }),
call('PUT', 'http://example.com/event/enable', { enable: true }),
call('GET', 'http://example.com/list/34')
...
];
var done = function(err, result){
console.log("Complete with err", err, " result", result);
};
async.parallel(tasks, done);
这是不平行。这些是嵌套顺序调用。 – skubski
谢谢,我将编辑我的问题标题:) –
使用'.success'已折旧,您应该坚持使用'.then' – webduvet