通过承诺从失败中恢复

时间:2016-07-08 01:38:24

标签: javascript node.js promise bluebird

使用dockerode(docker模块)我需要实现以下工作流程:

  1. 创建容器
  2. 如果创建失败,请拉出容器,然后创建容器
  3. 运行容器
  4. 所以看起来大致如下:

    docker.createContainer()
       .catch(function (e) { 
         return docker.pull()
            .then(function() { return docker.createContainer() };
       }).then(function(o) { o.start(); });
    

    这不是很干。有没有办法清理它?

1 个答案:

答案 0 :(得分:2)

什么不干? - DRYer唯一会使用es6箭头功能:

docker.createContainer()
   .catch(e => docker.pull().then(() => docker.createContainer()))
   .then(o => o.start());

这里唯一的重复是你问题的原始表达,我认为不能将其作为DRYer。