【问题标题】:How to simplify the error handling in tamejs?如何简化 tamejs 中的错误处理?
【发布时间】:2012-05-20 00:21:50
【问题描述】:

我对 tamejs 非常满意,它使我的 javascript 代码更加清晰。但是我还是觉得错误处理有点无聊。

查看代码:

// 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,我们需要先获取它并检查它。

可以看到示例中有很多错误处理行,很无聊。

有什么办法可以简化吗?

【问题讨论】:

  • 仅供参考,您不需要在单个语句 await 块周围使用 {}

标签: javascript node.js asynchronous tamejs


【解决方案1】:
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}));

我自己没有尝试过 tamejs,只是阅读了一下,但也许这种模式会起作用?

【讨论】:

  • 谢谢,这是一个选项,但帮助不大。
猜你喜欢
  • 1970-01-01
  • 2015-03-12
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多