首页 > 解决方案 > 如何捕获来自多个功能的拒绝?

问题描述

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

原始代码是:

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看起来不错,但我尝试使用它没有成功。

任何帮助表示赞赏。

标签: javascript

解决方案


async版本也可能如下所示:

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)通过内部突变相互依赖。


推荐阅读