javascript - 如何在 Promise 函数中抛出不同的错误?
问题描述
对于测试,我希望所有代码都被覆盖,并且我想拒绝这个 Promise 函数中每个步骤的不同的自写错误。
function convertToXML(b64DataPara) {
return new Promise(function(resolve, reject) {
var b64Data = b64DataPara;
if(b64Data === '' || b64Data === undefined){
return reject(new Error(errorMessages.B64Undefined));
}
if(typeof b64Data === 'number'){
return reject(new Error(errorMessages.StringNeededNotNumber));
}
// Decode base64 (convert ascii to binary)
var strData = atob(b64Data);
if (strData === undefined){
return reject(new Error(errorMessages.invalidCharacterInB64));
}
// Convert binary string to character-number array
var charData = strData.split('').map(function(x){return x.charCodeAt(0);});
// Turn number array into byte-array
var binData = new Uint8Array(charData);
// Decompress data
var data = pako.inflate(binData);
// Convert gunzipped byteArray back to ascii string:
var xmlData = String.fromCharCode.apply(null, new Uint16Array(data));
resolve(xmlData);
})
我有两个想法:
- 用 if / else 包裹每个步骤
- 将 Promise 函数中的所有代码放在 try-catch 中,并在 catch 块中处理 if else 等所有错误。
这两个想法对我来说似乎都不专业。所以我想知道最好/优雅的方法是什么。还是您认为所有子步骤都应该在它自己的 Promise 函数中?
解决方案
推荐阅读
- r - 仅绘制平滑线?
- angular - 如何在 Mat-table angular 5 中设置序列号
- annotations - 如何识别itext中的“回复”注释
- php - 如何在 jquery 脚本中嵌入 PHP?
- jquery - 如果我选择 1 月作为月份,2018 年作为年份,那么只显示 2018 年 1 月的完整日历
- postgresql - 从链接字符串中提取变量值
- php - Paytabs 支付网关 Api 无法正常工作
- node.js - 找不到模块'dialogflow-fulfillment'
- android - 如何在 Android.MK 文件中使用 -assumenosideeffects 标志启用 proguard
- c# - 读取值自动更新 UWA/UWP