這是非常簡單的控制異步操作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