创建一个空的承诺

时间:2013-05-24 23:03:26

标签: node.js promise q

我在承诺链中有一个功能,可能会或可能不会做某事。 E.g。

  getYear().then(function(results){
    if(results.is1999) return party();
    else return Q.fcall(function(){/*do nothing here*/});
  }).then(sleep)

getYearpartysleep都返回承诺。是否有更简洁的方式来编写else语句?也就是说,什么都不做,但仍然会回归可靠的承诺?

1 个答案:

答案 0 :(得分:26)

是。 Q(value)会返回value的承诺(如果value是承诺,它也会展开值。)

  getYear().then(function(results){
    if(results.is1999) return party();
    else return Q(undefined);
  }).then(sleep)

或者,您可以通过不返回任何内容来获得完全相同的语义:

  getYear().then(function(results){
    if(results.is1999) return party();
  }).then(sleep)

如果你想要的是一个永远不会解决的承诺,你最好的选择就是

  getYear().then(function(results){
    if(results.is1999) return party();
    else return Q.promise(function () {});
  }).then(sleep)

你能做的就是重复使用同样的承诺:

  var stop = Q.promise(function () {});
  getYear().then(function(results){
    if(results.is1999) return party();
    else return stop
  }).then(sleep)