2012-05-19 4 views
1

Я очень доволен tamejs, это делает мой код javascript намного понятнее. Но я все еще чувствую, что обработка ошибок немного скучна.Как упростить обработку ошибок в tamejs?

Смотрите код:

// callback should be callback(err, nextInt) 
function inc(n, callback) { 
    setTimeout(function() { 
     callback(null, n+1); 
    }, 100); 
} 

await { inc(3, defer(var err, next));} 
if(err) throw new Error(err);   // !!! error handling 

await { inc(8, defer(var err, next));} 
if(err) throw new Error(err);   // !!! error handling 

await { inc(12, defer(var err, next));} 
if(err) throw new Error(err);   // !!! error handling 

await { inc(39, defer(var err, next));} 
if(err) throw new Error(err);   // !!! error handling 

Поскольку почти каждый асинхронный API имеет обратные вызовы, которые имеют error в качестве первого параметра, мы должны получить его и проверить его первым.

Вы можете видеть, что в образце есть много строк обработки ошибок, что является скучным.

Есть ли способ упростить его?

+1

Fyi, вам не нужно '{}' вокруг блока с одним оператором 'await'. – ThiefMaster

ответ

0
function asyncCheck(workFunction) { 
    await { workFunction(defer(var err, next)) }; 
    if (err) throw new Error(err); 
} 

//Then use closures to define the work 

asyncCheck(function (callback) { inc(2, callback})); 

Я не пробовал себя сам, просто прочитал об этом, но, возможно, этот образец будет работать?

+0

Спасибо, это вариант, но не очень помогает. – Freewind

Смежные вопросы