【问题标题】:How to execute a command repeatedly and execute another when error throws up without always checking for if conditions?如何重复执行一个命令并在抛出错误时执行另一个命令而不总是检查 if 条件?
【发布时间】:2019-05-19 16:29:28
【问题描述】:

我有一个代码,只有两种情况 - 数据是字节格式/文本格式。只有在启动时或很少我可能会收到文本数据。因此我编写了如下代码:-

if (message.type === 'utf8') {
   console.log(message.utf8Data);
 }
if (message.type === 'binary') {
    dataStream.write(message.binaryData);
 }

现在我希望重构代码,默认情况下它采用二进制类型并继续进行

dataStream.write(message.binaryData); 

如果类型不匹配或错误,它应该执行

console.log(message.utf8Data);

请不要建议任何 if else 条件,因为它很昂贵,因为 dataStream 会执行几百次,而 text 在会话期间只执行一次或两次。对每种数据格式进行 if 检查很麻烦,因为每次我们浪费计算来了解数据格式。

我检查并执行 try...catch 。但我无法得到正确的结果。请有人建议如何重构此代码以提高性能。谢谢!

【问题讨论】:

    标签: javascript if-statement exception-handling try-catch


    【解决方案1】:
    try {
      dataStream.write (message.binaryData); 
    } catch (err) {
      // if an exception occurres print the data instead
      console.log (message.utf8Data); 
    }
    

    【讨论】:

    • 再次,如果用于检查每个数据。我希望函数在旅途中执行,而不是每次都检查格式。
    • 你可以删除 if 语句。在这种情况下,如果在写入过程中发生异常,将强制执行 catch。
    • 不,兄弟,似乎不起作用。发生的是 message.binaryData 返回一个未定义的;这不是错误。因此 try 循环不会中断,因为它不是错误(未定义是有效的数据类型)而是会中断应用程序!
    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2012-11-23
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多