javascript - 如果有任何失败,则取消获取链
问题描述
我正在研究一个元素,该元素从用户那里得到一个 csv 文件,获取命令行(添加、重命名、更新、删除不同的项目)并在命令正确和合法的基础上将它们执行到数据库中。
目前,我尝试在执行每个命令之前对其进行验证,但我无法捕捉到每一个错误,比如他们在添加成分时出现拼写错误,然后尝试在后面的行中通过其正确名称引用该成分。因此,某些命令将尝试执行并失败。有没有办法“模拟调用”每个命令以确保它们在实际执行每个命令之前工作?
目前,所有命令都在此函数中执行,如果任何命令未能执行(目前),我将返回 true 或 false,这会将状态设置为显示成功消息或不显示成功消息。
try {
const { categories } = await fetchCategories();
let results = await sheetData.reduce(async (accum: any, ingredient: any) => {
let updateArray = await accum;
// console.log(`>>> ${ingredient.command} ${ingredient.name}`)
updateArray.push(await buildExecute(ingredient, categories));
// console.log(`<<< ${ingredient.command} ${ingredient.name}`)
return updateArray;
}, Promise.resolve([]));
const result = await Promise.all(results);
return !result.some(val => val === false)
} catch (err) {
return false;
}
在内部buildExecute
,我只是构建要调用的端点、要包含在正文中的数据以及获取方法本身
try {
const { result, error } = await (await fetch(endpoint, {
method: method,
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})).json();
if (error) {
console.error(error);
return false;
}
return true;
} catch (err) {
console.error(err);
return false;
}
如果有一个库可以满足我的需求,我会尝试一下,或者如果有内置的方法,那也可以。
解决方案
推荐阅读
- swiftui - SwiftUI 中 TextField 上的 FirstResponder & :onCommit
- javascript - VisJS 网络图无法稳定并在循环中移动
- batch-file - 用批处理文件替换csv中的非打印字符
- arrays - 代码在为彼此切换字母时出错
- python - 如何在不指定目标的情况下在 Keras model.fit 中使用 tf.Dataset?
- ruby-on-rails - 如何添加信息以设计@resource
- java - java.lang.NoSuchMethodError: org.springframework.util.Assert.isTrue(ZLjava/util/function/Supplier;)V
- css - Wordpress(divi)Flexbox对齐问题
- java - 尝试在其中运行我的 main 时无法在 IntelliJ 终端中使用“java”命令
- javascript - Create a Chrome extension show content on a page and invisible in inspect element