javascript - 如何捕获多个功能的拒绝?

标签 javascript

我正在重构一些代码并删除不必要的回调。

原始代码是:

create(_job_id).then(function (create_id) {
    latest().then(function (latest_config) {
        update(create_id).then(function () {    

            // More code

        }).catch(function (err) {
            console.log(err);                       
        });
    .catch(function (err) {
        console.log(err);                       
    });
.catch(function (err) {
    console.log(err);                       
});

我将其重构为:

const setup = async () => {

    const create_id  = create(_job_id);
    const latest_config = await latest();
    await update(create_id);
    return { create_id, latest_config };
}

setup().then((setup) => {
    console.log(setup);
})

但是现在拒绝的情况没有得到处理。我将如何优雅地处理“捕获”。 Promises.all 看起来不错,但我尝试使用它但没有成功。

感谢任何帮助。

最佳答案

异步版本也可能如下所示:

const p_latest_config = latest();

create(_job_id)
  .then(create_id => {
    update(create_id).catch(err => console.log(err));
    return Promise.all([create_id, p_latest_config]);
  })
  .then(([create_id, latest_config]) => ({create_id, latest_config}))
  .then(setup => console.log(setup))
  .catch(err => console.log(err));

上面假设 create(_job_id)latest()update(create_id) 不通过内部突变相互依赖.

关于javascript - 如何捕获多个功能的拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59734020/

相关文章:

javascript - 缩放/缩放 Div 后在 Google Maps API v3 上使用绘图管理器?

javascript - 如何在 Javascript 中迭代数组键?

javascript - 使用 jquery ajax 进行复选框过滤

javascript - 如何使用 Javascript 在 TextArea(文本框)中单击(放置光标闪烁)而不使用鼠标单击

javascript - 如何存储来自 ajax 调用的本地 javascript 结果以供稍后显示?

javascript - 异步访问外部 JSON 数据时如何向 map 添加变化的标记

javascript - 从请求头读取数据

javascript - 如何在右键单击拖动时禁用上下文菜单?

javascript - 检查变量是否包含选定的字符

javascript - 除了 Array.prototype.join() 之外,是否还有一种更短的方法将数组连接到一个字符串?