首页 > 解决方案 > 如何重复执行一个命令并在抛出错误时执行另一个命令而不总是检查 if 条件?

问题描述

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

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 。但我无法得到正确的结果。请有人建议如何重构此代码以提高性能。谢谢!

标签: javascriptif-statementexception-handlingtry-catch

解决方案


try {
  dataStream.write (message.binaryData); 
} catch (err) {
  // if an exception occurres print the data instead
  console.log (message.utf8Data); 
}

推荐阅读